After much isolation trying to pin down a memory leak I've gotten to what may be the root cause. We have the monitoring level set to HIGH for the Transaction Service and are using 220.127.116.11 build 5.
If I create a simple stateless bean that contains a method with a @Schedule annotation:
@Schedule(second = "", minute = "", hour = "", dayOfWeek = "", dayOfMonth = "", month = "", year = "*", info = "MasterScheduler")
This will cause the Transaction Service monitor to note an "active transaction" every time the timer is invoked.
Over the course of a day there's a noticeable memory leak and it will eventually run out of memory.
If we turn the monitoring level for the Transaction Service to OFF it goes away.