--- a/hotspot/src/share/vm/classfile/classLoaderData.cpp Tue Apr 30 16:36:24 2013 +0200
+++ b/hotspot/src/share/vm/classfile/classLoaderData.cpp Thu May 02 19:28:59 2013 +0200
@@ -280,6 +280,9 @@
void ClassLoaderData::unload() {
_unloading = true;
+ // Tell serviceability tools these classes are unloading
+ classes_do(InstanceKlass::notify_unload_class);
+
if (TraceClassLoaderData) {
ResourceMark rm;
tty->print("[ClassLoaderData: unload loader data "PTR_FORMAT, this);
@@ -303,6 +306,9 @@
ClassLoaderData::~ClassLoaderData() {
+ // Release C heap structures for all the classes.
+ classes_do(InstanceKlass::release_C_heap_structures);
+
Metaspace *m = _metaspace;
if (m != NULL) {
_metaspace = NULL;