Am 07.08.2015 13:04, schrieb Michael Haupt:
Hi Charles,

the pull request mentions a class named Java7ClassValue - does this mean
it's a Java 7 issue or is it reproducible on 8 and maybe even 9? Names
can be misleading. ;-)

To clarify: by what means is the ClassValue removed in the JRuby

I agree this should not happen.

coming back on this and after spending the whole day on debugging a permgen issue (and Cedric actually 3 days) that seems to be related to this.

I am not from the Ruby guess, so I will show the Groovy part. We discovered a permgen issue, that prevents the groovy runtime from unloading and the reason turned out to be ClassValue. We get a similar graphic Charles got, only a bit more complex. In my test scenario we load the Groovy runtime in an URLClassLoader, call a method to cause the runtime to initialize and then forget about it, just to do this again in a loop. What happens is that we get into a permgen problem, since the loader cannot be unloaded because ClassValue seems to keep classes from that loader to unload.

I tested this with 7_60, 7_65, 8_25, and jdk1.9.0-ea-b68. All have this problem.

As a special bonus we have a lot of system classes with added class values... for example all the primitive types. I suspected ClassValue earlier already and made myself a simple test but it seems the simple version is not going to show me what I want. So it is not as simple as having a classloader load a custom ClassValue class and have the classloader not unloading.

Guess we will try the WeakReference vesion next as well... not that is a solution for us.

bye blackdrag

Jochen "blackdrag" Theodorou

mlvm-dev mailing list

Reply via email to