Hi all,

Nice plug for JRebel/Zero turn-around. Jevgeni and the lads in Estonia have 
really put together a great product and it's amazing that they've been able to 
find their own hack/fix for the classloader leak. If anyone was going to do 
it.. these guys needed to 'cos as you said, having to restart your VM because 
of the perm space problem really suxs.

But, to blame it on perm space is misleading. *ALL* JVM's no matter if they 
have perm space or not leak classloaders. This includes Azul, IBM, HP, JRockit 
and of course Sun/Oracle. This is because the real problem is a result of the 
complex relationships that exist between classes, instances of those classes, 
extensions of those classes, implementations of interfaces mixed in with 
application servers and the tiered delegating class creates. Long story short, 
the Java 2 class loader model that is broken. Perm Space is fundamentally good 
as it's intent is to partition away objects from the collectors.

For example, if you have a application class implementing an interface from the 
bootstrap classloader, it is possible that this relationship, which is 
expressed in the object reference chains, will keep your classes metadata live. 
Because your class is live, the classloader that loaded it will be live. Since 
the classloader is live, *all* of the classes referenced by that classloader 
will be kept live. Which means in the context of an application server, that 
products logic may "unload" an application and reload the new version but that 
intricate little reference chain from the bootstrap classloader (or the 
extension or the application or another tiered loader) will prevent everything 
from being GC'ed.

Note, no mention of perm space this description of the problem. The Perm Space 
problem is that being a separate memory pool in the JVM, the classloaders leak 
is contained. This is bad because that space is limited and you will reach it 
fairly quickly. But it's also good in that perm space leaks tend to have very 
little impact on GC pause times.

Regards,
Kirk

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com.
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to