On Jul 5, 2007, at 7:19 AM, Shane Cruz wrote:

> That could be related to a common classloader memory leak.  See this
> article for more information:
>
> http://blogs.sun.com/fkieviet/entry/classloader_leaks_the_dreaded_java

That page is misleading, by the way, so I don't like it as a general  
article.  (The description of the underlying problem is correct.)

It implies that the problem is in application code for stupidly using  
Level.  "Perhaps it's really your fault."  In that example, it's not  
the application's fault at all.  It's a JDK bug.  The specific  
problem on that page is that the JDK's implementation of Level is  
buggy.  There's no way for you to know that without someone telling  
you, so I can't see how that's "your fault."

If you're interested in the reasons why Level is buggy, the article  
is fine.

You'd need a profiler to track the problem down (Resin's admin  
profiler doesn't provide enough detail for this.  jhat might work,  
but it's a bit ugly.)

Things to check:

   1) singletons/static fields at a parent classloader (e.g. system  
classpath or host), especially caching stuff.

   2) ThreadLocal

For example, if you put struts.jar in resin/lib, it's possible that  
something like struts.jar has caching code that's not properly  
classloader-aware.  If you move struts.jar into WEB-INF/lib (or resin/ 
ext-webapp), the problem might disappear (because the cache is no  
longer at a parent level.)

-- Scott

>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Jan Kriesten
> Sent: Thursday, July 05, 2007 6:16 AM
> To: General Discussion for the Resin application server
> Subject: [Resin-interest] class reloading / out-of-memory
>
>
> hi,
>
> i have the following out-of-memory error when changing a class file  
> of a
> web-app
> and the web-app is re-inited:
>
> ---8<---
> java.lang.OutOfMemoryError: PermGen space
>      at java.lang.ClassLoader.defineClass1(Native Method)
>      at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
>      at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java: 
> 124)
>      at
> com.caucho.loader.DynamicClassLoader.loadClass 
> (DynamicClassLoader.java:1
> 329)
>      at
> com.caucho.loader.DynamicClassLoader.findClass 
> (DynamicClassLoader.java:1
> 199)
>      at
> com.caucho.loader.DynamicClassLoader.loadClass 
> (DynamicClassLoader.java:1
> 119)
>      at
> com.caucho.loader.DynamicClassLoader.loadClass 
> (DynamicClassLoader.java:1
> 068)
>      at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
> ---8<---
>
> this regularly happens after the app is reloaded for the 5th or 6th
> time.
>
> the admin service works without a flaw and indicates that there should
> be enough
> free memory:
>
> Total memory: 122.42Meg
> Free memory:  56.45Meg
>
> any hints where to look?
>
> i'm using resin 3.1.1 and jdk 1.6
>
> best regards, --- jan.
>
>
>
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest
>
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest



_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to