Where are the thousands of messages going? Are they being consumed or not? Are they going to the DB, and what DB is being used?
Reusing the same object doesn't improve anything, as it gets serialized (copied) on the way to the server anyway.
If it's easy enough to reproduce, I would first upgrade to JBoss 3.2.6RC1.
The messages are being consumed by another MDB and it is possible that the memory problem is related to that MDB but I don't think that is the case. I am using an Oracle database as a persistence mechanism for the messages. Unfortunately I don't have a lot of flexibility in the JBoss version used in production.
Do you need to send those 10.000 messages in the same transaction? Otherwise, you can use java:/JmsXA and create a connection for each message. Won"t be a problem since it's a pooled behind the scenes.
I'm not actually sending them within a transaction. I've set the transaction attributes of the MDB that is sending the messages to NotSupported. I don't know whether it is using a single database transaction to commit the messages to the persistent store though (Oracle).