Caldarale, Charles R wrote:
From: Ognjen Blagojevic [mailto:ogn...@etf.bg.ac.rs]
Subject: Debugging PermGen problems

Environment: Tomcat 6.0.14, Windows XP SP2.

Before doing *anything* else, move up to the current level (6.0.26).  Besides 
having numerous stability and security fixes beyond your nearly three-year old 
version, it has several enhancements to catch and work around these memory 
leakers.  It's pointless to continue experimentation with 6.0.14.

Thank you for hint. We upgraded to 6.0.26, and DriverManager problems are now gone.

A bit of research of the other GC root paths revealed that one culprit is jsf-impl jar, so we upgraded from mojarra 1.2_08 to latest 1.2_14 and solved part of the problem with PropertyEditorManager.

Now, it seems that there is no more problematic static references, but few threadLocal references are still there. Those seems to be related to JasperReports 2.0.5 library. From the root paths attached below, I guess that the thread "http-8443-6" holds reference to the class loaded by webapp class loader, and therefore it is not possible to GC that webapp class loader.

If my assumption is correct, next thing we need to find is how to inspect and clean up thread local after JasperReport servlet finished his work. Right?

Regards,
Ognjen

Paths from "GC Roots" to "Object WebappClassLoader #04068C80"

+-------------------------------------------------------------------------------------------+-----------------+----------------+
| Name | Retained Size | Shallow Size |
+-------------------------------------------------------------------------------------------+-----------------+----------------+
| +---org.apache.catalina.loader.WebappClassLoader | 8,109,432 | 168 | | | | | | | +---<loader> of net.sf.jasperreports.engine.util.JRClassLoader | 64 | 64 | | | | | | | | | +---<class> of net.sf.jasperreports.engine.util.JRClassLoader | 632 | 56 | | | | | | | | | +---<loader> of stu_zavrsni_rad_prijava_detail_1269596557540_786829 | 696 | 64 | | | | | | | | | +---value of java.lang.ThreadLocal$ThreadLocalMap$Entry | 728 | 32 | | | | | | | | | +---[52] of java.lang.ThreadLocal$ThreadLocalMap$Entry[64] | 5,776 | 272 | | | | | | | | | +---table of java.lang.ThreadLocal$ThreadLocalMap | 5,800 | 24 | | | | | | | | | +---threadLocals of java.lang.Thread [Stack Local, Thread] "http-8443-6" | 6,088 | 104 | | | | | | | +---classloader of java.security.ProtectionDomain | 920 | 32 | | | | | | | | | +---<protection domain> of stu_zavrsni_rad_prijava_detail_1269596557540_786829 | 696 | 64 | | | | | | | | | +---value of java.lang.ThreadLocal$ThreadLocalMap$Entry | 728 | 32 | | | | | | | | | +---[52] of java.lang.ThreadLocal$ThreadLocalMap$Entry[64] | 5,776 | 272 | | | | | | | | | +---table of java.lang.ThreadLocal$ThreadLocalMap | 5,800 | 24 | | | | | | | | | +---threadLocals of java.lang.Thread [Stack Local, Thread] "http-8443-6" | 6,088 | 104 | | | | | | | +---contextClassLoader of java.lang.Thread [Stack Local, Thread] "Java2D Disposer" | 320 | 104 | | | | | | | +---parent of net.sf.jasperreports.engine.util.JRClassLoader | 632 | 56 | | | | | | | +---<loader> of stu_zavrsni_rad_prijava_detail_1269596557540_786829 | 696 | 64 | | | | | | | +---value of java.lang.ThreadLocal$ThreadLocalMap$Entry | 728 | 32 | | | | | | | +---[52] of java.lang.ThreadLocal$ThreadLocalMap$Entry[64] | 5,776 | 272 | | | | | | | +---table of java.lang.ThreadLocal$ThreadLocalMap | 5,800 | 24 | | | | | | | +---threadLocals of java.lang.Thread [Stack Local, Thread] "http-8443-6" | 6,088 | 104 |
+-------------------------------------------------------------------------------------------+-----------------+----------------+


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to