views:

343

answers:

2

I observe in consecutive javacore dumps that the addresses of classloaders are changing in Websphere 6.1 (IBM JVM 1.5.0). The classes below the classloader have unchanged address. So isn't it the same classloader at a new address?

E.g. in first javacore

2CLTEXTCLLOAD Loader com/ibm/ws/classloader/CompoundClassLoader(0x00002AAABF5BB7F0)
3CLTEXTCLASS org/eclipse/emf/ecore/EObject(0x00002AAB24684B30)

and in a later javacore

2CLTEXTCLLOAD Loader com/ibm/ws/classloader/CompoundClassLoader(0x00002AAABF5AB6E0)
3CLTEXTCLASS org/eclipse/emf/ecore/EObject(0x00002AAB24684B30)

Same class previously under a classloader at 0x00002AAABF5BB7F0, and now the classloader is at 0x00002AAABF5AB6E0

I'm trying to figure out a class unloading problem, and this does not seem to make life easier when digging through heap dumps.

A: 

If the application was stopped and restarted wouldnt' new classloaders be created for your classes because there is an application classloader?

Are you concerned about this because of native heap consumption or something else?

Michael Ransley
The application is stopped and restarted, but the old set of classes is not removed. Likely because there is still some reference from a root living within another classloader to the previous application instance.Yes, the total virtual size of the application server is going through the roof, when doing the stop-start cycle several times. (A workaround is to restart the whole application server, but there are plenty of other applications running, so it would cause some downtime.)
+1  A: 

Perhaps the GC is compacting the heap. Consider -Xnocompactgc or -Xnocompactexplicitgc as a generic JVM arguments. See IBM JDK diagnoses documentation: http://www.ibm.com/developerworks/java/jdk/diagnosis/

bkail