JDK7 perm gen leak

Scott Oaks scott.oaks at oracle.com
Mon Sep 12 08:03:40 PDT 2011

I am trying to track down a permgen leak in an app we have running JDK 
7. When I run jmap -permstat, I'm a little confused by the output.

The first line of the jmap output is:
304286 intern Strings occupying 48081424 bytes.

But I thought that the interned strings were moved out of permgen in JDK 
7? Maybe that output is just left over from JDK 6.

The bigger issue is the output from the class loaders -- every line in 
the output says that the classloader in question is dead, e.g:

0x000000019a1c2770      0       0       0x000000019a1c27d0      dead    
weblogic/utils/classloaders/GenericClassLoader at 0x0000000140ae6950

Well, there is one exception; the bootstrap classloader is still showing 
that it is live. Still, at least some of those weblogic class loaders 
must still be alive, as the app is still running and using classes 
loaded by them. I hope that many more are actually dead (else they are 
the source of the leak) -- but I am not sure how to tell how many are 
actually dead vs. alive. I have to go look at the dump and trace the 
classloaders back anyway, so it isn't really a big issue -- but it is a 
little curious to me.


More information about the hotspot-dev mailing list