geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevan Miller (JIRA)" <>
Subject [jira] Created: (GERONIMO-3326) ClassLoader memory leak caused by OpenJPA
Date Tue, 17 Jul 2007 03:51:04 GMT
ClassLoader memory leak caused by OpenJPA

                 Key: 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

FYI, here are the GC Roots for one of our ClassLoaders being leaked --

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.

View raw message