You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Timofey <Ti...@effective-soft.com> on 2007/07/31 13:02:17 UTC

Memory leak in EJB or somewhere

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.