RFR (S): 8011803: release_C_heap_structures is never called for anonymous classes.
david.holmes at oracle.com
Thu Apr 11 19:21:12 PDT 2013
Can you clarify something for me please. ClassLoaderData::unload() is
what now cleans up the anonymous classes - correct? But
ClassLoaderData::unload() is only called when the ClassLoader is
unloaded - correct? And the whole point of anonymous classes is that
they get unloaded independent of the classloader lifecycle. Assuming I'm
correct so far it seems to me that if the classloader is never unloaded,
the anonymous classes still won't have release_C_heap_structures called.
And if it is unloaded it could be well after the classes were unloaded.
On 12/04/2013 6:52 AM, Coleen Phillimore wrote:
> Summary: Call this function from CLD::unload() now for anonymous classes.
> Anonymous classes aren't in the system dictionary so
> release_C_heap_structures isn't called for them if they are unloaded. I
> fixed this for jdk8 because they are in the class loader data graph but
> for jdk7, I don't know how to fix this. They are unloaded by being
> garbage collected after the references are dropped.
> Tested with ute tests vm.mvlm.testlist nsk.monitoring.testlist and
> jdk/test/java/lang/invoke tests.
> open webrev at http://cr.openjdk.java.net/~coleenp/8011803/
> bug link at http://bugs.sun.com/view_bug.do?bug_id=8011803
More information about the hotspot-dev