I'm running Geronimo 1.1.1 (branch Rev431518) under JDK 1.4.2. There's relatively simple EJB-based application that accesses Derby through tranql connector 1.2. Having several clients connected and sending a simple request once per 10 seconds, I'm seeing java.lang.OutOfMemoryError with no stack trace. It looks exactly like if the application is redeployed, but it is not, and MaxPermSize is increased properly.
I've tried to profile the application and found that the objects of the following classes are accumulated: org.apache.geronimo.transaction.context.ContainerTransactionContext org.tranql.cache.SimpleFlushStrategy org.tranql.identity.GlobalIdentity ... And many others, related to transactions and tranql. Also, objects of generated classes like com.pm.TouchscreenCMP$$EnhancerByCGLIB$$65ba9f43 are accumulated. Finally, <class>[] objects are accumulated, causing permanent generation to overflow and display that OutOfMemoryError. It doesn't look like a programming error, because: 1. The objects are released if one more client is connected (it doesn't always work, though). 2. The memory is not leaked at all if the number if clients is relatively large (50, for example). The memory is not released when application is redeployed. For me, it looks like TranQL is caching transaction data but never releases them. Of course, I can switch to use Bean transactions instead of Container transactions, but it doesn't seem to be a good solution. Can anyone help me? I'm working 3 weeks to fix the issue and completely ran out of ideas. -- View this message in context: http://www.nabble.com/Memory-leak-in-EJB-or-somewhere-tf4192325s134.html#a11922040 Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
