Hello,

I am deploying a module into the Solaris Common Agent container (JMX/JDMK).
I carefully monitored my module classes to make sure all objects we GC'd after the undeploy.

Next I added classloading of the embedded derby driver, did a shutdown of the database and unregistered the driver. Using jmap/jhat (jdk 1.6) I see that all my objects are being kept alive and that there are a lot of derby static refs around to java.util.logging.Logger. This leak will force me to bounce the container during redeploy since PermGen will eventually exhaust and cause an out of memory condition.

Is this a known problem? Does derby/javaDB have a bug against static references to log objects?

Any guidance is very much appreciated.
Sincerely,
Bob Harryman

The jhat reported static refs:

Rootset references to class java.util.logging.Logger (excludes weak refs)
References to class java.util.logging.Logger (84 bytes)
Java Static References
.....
Static reference from org.apache.derby.impl.services.monitor.BaseMonitor.class$org$apache$derby$iapi$services$monitor$PersistentService (from class org.apache.derby.impl.services.monitor.BaseMonitor) : --> class org.apache.derby.iapi.services.monitor.PersistentService (84 bytes) (??:)
--> [EMAIL PROTECTED] (79 bytes) (??:)
--> class com.sun.cacao.impl.ModuleClassLoader (84 bytes) (static field logger:)
--> [EMAIL PROTECTED] (58 bytes) (??:)
--> class java.util.logging.Logger (84 bytes)
Static reference from org.apache.derby.impl.services.monitor.BaseMonitor.class$org$apache$derby$io$StorageFactory (from class org.apache.derby.impl.services.monitor.BaseMonitor) :
--> class org.apache.derby.io.StorageFactory (84 bytes) (??:)
--> [EMAIL PROTECTED] (79 bytes) (??:)
--> class com.sun.cacao.impl.ModuleClassLoader (84 bytes) (static field logger:)
--> [EMAIL PROTECTED] (58 bytes) (??:)
--> class java.util.logging.Logger (84 bytes)


Here is how I'm doing the analysis:

$  /usr/java/bin/jps -v | grep ontainer
10604 ContainerPrivate -Xms16M -Xmx128M -Dcom.sun.management.jmxremote -Dfile.encoding=utf-8 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=9091,suspend=n -Djavax.management.builder.initial=com.sun.jdmk.JdmkMBeanServerBuilder -Dcacao.config.dir=/home/bharryma/tools/cacao/2.1_b19/cacao_2.1/etc/cacao/instances/default
$ rm leak
$  /usr/java/bin/jmap -dump:format=b,file=leak 10604
Dumping heap to /home/bharryma/projects/isns/dumps/leak ...
Heap dump file created
$  /usr/java/bin/jhat -J-Xmx512m leak
Reading from leak...
Dump file created Tue May 22 09:14:36 MDT 2007
Snapshot read, resolving...
Resolving 70073 objects...
Chasing references, expect 14 dots..............
Eliminating duplicate references..............
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

Reply via email to