1663 } |
1663 } |
1664 |
1664 |
1665 // Unload Klasses, String, Symbols, Code Cache, etc. |
1665 // Unload Klasses, String, Symbols, Code Cache, etc. |
1666 if (ClassUnloadingWithConcurrentMark) { |
1666 if (ClassUnloadingWithConcurrentMark) { |
1667 GCTraceTime(Debug, gc, phases) debug("Class Unloading", _gc_timer_cm); |
1667 GCTraceTime(Debug, gc, phases) debug("Class Unloading", _gc_timer_cm); |
1668 bool purged_classes = SystemDictionary::do_unloading(&g1_is_alive, _gc_timer_cm, false /* Defer cleaning */); |
1668 bool purged_classes = SystemDictionary::do_unloading(_gc_timer_cm, false /* Defer cleaning */); |
1669 _g1h->complete_cleaning(&g1_is_alive, purged_classes); |
1669 _g1h->complete_cleaning(&g1_is_alive, purged_classes); |
1670 } else { |
1670 } else { |
1671 GCTraceTime(Debug, gc, phases) debug("Cleanup", _gc_timer_cm); |
1671 GCTraceTime(Debug, gc, phases) debug("Cleanup", _gc_timer_cm); |
1672 // No need to clean string table and symbol table as they are treated as strong roots when |
1672 // No need to clean string table and symbol table as they are treated as strong roots when |
1673 // class unloading is disabled. |
1673 // class unloading is disabled. |