< prev index next >

src/hotspot/share/classfile/classLoaderData.cpp

Print this page

        

@@ -571,13 +571,10 @@
 }
 
 void ClassLoaderData::unload() {
   _unloading = true;
 
-  // Tell serviceability tools these classes are unloading
-  classes_do(InstanceKlass::notify_unload_class);
-
   LogTarget(Debug, class, loader, data) lt;
   if (lt.is_enabled()) {
     ResourceMark rm;
     LogStream ls(lt);
     ls.print("unload");

@@ -587,10 +584,14 @@
 
   // Some items on the _deallocate_list need to free their C heap structures
   // if they are not already on the _klasses list.
   unload_deallocate_list();
 
+  // Tell serviceability tools these classes are unloading
+  // after erroreous classes are released.
+  classes_do(InstanceKlass::notify_unload_class);
+
   // Clean up global class iterator for compiler
   static_klass_iterator.adjust_saved_class(this);
 }
 
 ModuleEntryTable* ClassLoaderData::modules() {
< prev index next >