equal
deleted
inserted
replaced
5230 if (should_unload_classes()) { |
5230 if (should_unload_classes()) { |
5231 { |
5231 { |
5232 GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer_cm); |
5232 GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer_cm); |
5233 |
5233 |
5234 // Unload classes and purge the SystemDictionary. |
5234 // Unload classes and purge the SystemDictionary. |
5235 bool purged_class = SystemDictionary::do_unloading(&_is_alive_closure); |
5235 bool purged_class = SystemDictionary::do_unloading(&_is_alive_closure, _gc_timer_cm); |
5236 |
5236 |
5237 // Unload nmethods. |
5237 // Unload nmethods. |
5238 CodeCache::do_unloading(&_is_alive_closure, purged_class); |
5238 CodeCache::do_unloading(&_is_alive_closure, purged_class); |
5239 |
5239 |
5240 // Prune dead klasses from subklass/sibling/implementor lists. |
5240 // Prune dead klasses from subklass/sibling/implementor lists. |
5251 GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer_cm); |
5251 GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer_cm); |
5252 // Delete entries for dead interned strings. |
5252 // Delete entries for dead interned strings. |
5253 StringTable::unlink(&_is_alive_closure); |
5253 StringTable::unlink(&_is_alive_closure); |
5254 } |
5254 } |
5255 } |
5255 } |
5256 |
|
5257 |
5256 |
5258 // Restore any preserved marks as a result of mark stack or |
5257 // Restore any preserved marks as a result of mark stack or |
5259 // work queue overflow |
5258 // work queue overflow |
5260 restore_preserved_marks_if_any(); // done single-threaded for now |
5259 restore_preserved_marks_if_any(); // done single-threaded for now |
5261 |
5260 |