1750 assert(_global_mark_stack.is_empty(), "Marking should have completed"); |
1750 assert(_global_mark_stack.is_empty(), "Marking should have completed"); |
1751 |
1751 |
1752 // Unload Klasses, String, Symbols, Code Cache, etc. |
1752 // Unload Klasses, String, Symbols, Code Cache, etc. |
1753 if (ClassUnloadingWithConcurrentMark) { |
1753 if (ClassUnloadingWithConcurrentMark) { |
1754 GCTraceTime(Debug, gc, phases) debug("Class Unloading", _gc_timer_cm); |
1754 GCTraceTime(Debug, gc, phases) debug("Class Unloading", _gc_timer_cm); |
1755 bool purged_classes = SystemDictionary::do_unloading(&g1_is_alive, false /* Defer klass cleaning */); |
1755 bool purged_classes = SystemDictionary::do_unloading(&g1_is_alive, _gc_timer_cm, false /* Defer cleaning */); |
1756 g1h->complete_cleaning(&g1_is_alive, purged_classes); |
1756 g1h->complete_cleaning(&g1_is_alive, purged_classes); |
1757 } else { |
1757 } else { |
1758 GCTraceTime(Debug, gc, phases) debug("Cleanup", _gc_timer_cm); |
1758 GCTraceTime(Debug, gc, phases) debug("Cleanup", _gc_timer_cm); |
1759 // No need to clean string table and symbol table as they are treated as strong roots when |
1759 // No need to clean string table and symbol table as they are treated as strong roots when |
1760 // class unloading is disabled. |
1760 // class unloading is disabled. |