ClassLoader memory leak caused by OpenJPA
-----------------------------------------
Key: GERONIMO-3326
URL: https://issues.apache.org/jira/browse/GERONIMO-3326
Project: Geronimo
Issue Type: Bug
Security Level: public (Regular issues)
Components: persistence
Affects Versions: 2.0-M7
Reporter: Kevan Miller
Fix For: 2.0-M7
As David Jencks mentioned in GERONIMO-3305, there's a ClassLoader memory leak
in deploy/undeploy.
Geronimo is running out of PermGen space in some simple deploy/undeploy
scenarios involving OpenJPA. The cause of the problem seems to be the _metas
table in PCRegistry. _metas is a ConcurrentReferenceHashMap with WEAK reference
keys and HARD reference values. The keys are the PersistenceCapable classes.
While the values are the metadata for these classes which are maintained by the
internal Meta class.
The cause of the ClassLoader memory leak is simple -- if any of the
objects/classes held by the Meta class (e.g. fieldTypes) have also been loaded
by the same ClassLoader used to load the PersistenceCapable class, the
PersistenceCapable class (the weak key) will never be GCed. The value of the
HashMap entry will always maintain a hard reference to the ClassLoader. Since
the ClassLoader will never be GC'ed, the the the pcClass Class object will
never be GC'able...
The problem can be easily recreated using current Geronimo trunk and the
Geronimo Daytrader application.
FYI, here are the GC Roots for one of our ClassLoaders being leaked --
http://people.apache.org/~kevan/PCRegistryLeak.html
I've contacted the OpenJPA dev list. Hopefully, can get this resolved, quickly.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.