2012/11/6 Christopher Schultz <ch...@christopherschultz.net>:
>
> I was playing around with the manager webapp today and just for grins,
> I redeployed my webapp and then hit the "Find Leaks" button to see how
> long it would take Tomcat to decide that my webapp reloads cleanly.
>
> It didn't. That is, my webapp does not appear to cleanly reload. Which
> was a surprise to me.
>
> I waited a few moments and tried again: Find Leaks still says "there's
> a leak, confirm with a profiler". So I attached with YourKit, took a
> memory snapshot and started looking around: I found 4
> WebappClassLoaders (1 for manager, 1 for my webapp, 1 for a dummy ROOT
> webapp I have and finally a started=false WebappClassLoader for the
> old pre-reload of my webapp).
>
> Interestingly, the started=false WebappClassLoader says that it is
> Weak/Soft Reachable. That means that tracing GC roots doesn't really work.
>
> Requesting GC via the manager changes nothing. Requesting GC via the
> profiler changes nothing.
>
> Does anyone have any good ideas for tracking-down what is keeping this
> WebappClassLoader in memory? Do I just have to intentionally exhaust
> the heap to convince the MM/GC that it should toss-out this WCL?
>
> Any suggestions would be greatly appreciated.
>

1) There exists an -X option that disables explicit GC calls. I hope
that you are not using it.

2) I know of a bug in JVM when a certain kind of leak goes undetected.
I mean the leak through a shared Exception instance and its native
stacktrace. See

https://issues.apache.org/bugzilla/show_bug.cgi?id=50460
https://issues.apache.org/bugzilla/show_bug.cgi?id=53936
(Linked from https://wiki.apache.org/tomcat/MemoryLeakProtection)

Best regards,
Konstantin Kolinko

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

Reply via email to