src/share/vm/classfile/classLoaderData.cpp

changeset 5025
d58c62b7447d
parent 5016
9d75bcd7c890
parent 4981
d587a5c30bd8
child 5237
f2110083203d
equal deleted inserted replaced
5024:9075044ed66b 5025:d58c62b7447d
278 } 278 }
279 279
280 void ClassLoaderData::unload() { 280 void ClassLoaderData::unload() {
281 _unloading = true; 281 _unloading = true;
282 282
283 // Tell serviceability tools these classes are unloading
284 classes_do(InstanceKlass::notify_unload_class);
285
283 if (TraceClassLoaderData) { 286 if (TraceClassLoaderData) {
284 ResourceMark rm; 287 ResourceMark rm;
285 tty->print("[ClassLoaderData: unload loader data "PTR_FORMAT, this); 288 tty->print("[ClassLoaderData: unload loader data "PTR_FORMAT, this);
286 tty->print(" for instance "PTR_FORMAT" of %s", class_loader(), 289 tty->print(" for instance "PTR_FORMAT" of %s", class_loader(),
287 loader_name()); 290 loader_name());
301 return alive; 304 return alive;
302 } 305 }
303 306
304 307
305 ClassLoaderData::~ClassLoaderData() { 308 ClassLoaderData::~ClassLoaderData() {
309 // Release C heap structures for all the classes.
310 classes_do(InstanceKlass::release_C_heap_structures);
311
306 Metaspace *m = _metaspace; 312 Metaspace *m = _metaspace;
307 if (m != NULL) { 313 if (m != NULL) {
308 _metaspace = NULL; 314 _metaspace = NULL;
309 // release the metaspace 315 // release the metaspace
310 delete m; 316 delete m;

mercurial