< prev index next >

src/share/vm/gc/parallel/psMarkSweep.cpp

Print this page

        

*** 531,554 **** --- 531,565 ---- } // This is the point where the entire marking should have completed. assert(_marking_stack.is_empty(), "Marking should have completed"); + { + GCTraceTime(Debug, gc) t("Class Unloading", _gc_timer); + // Unload classes and purge the SystemDictionary. bool purged_class = SystemDictionary::do_unloading(is_alive_closure()); // Unload nmethods. CodeCache::do_unloading(is_alive_closure(), purged_class); // Prune dead klasses from subklass/sibling/implementor lists. Klass::clean_weak_klass_links(is_alive_closure()); + } + { + GCTraceTime(Debug, gc) t("Scrub String Table", _gc_timer); // Delete entries for dead interned strings. StringTable::unlink(is_alive_closure()); + } + { + GCTraceTime(Debug, gc) t("Scrub Symbol Table", _gc_timer); // Clean up unreferenced symbols in symbol table. SymbolTable::unlink(); + } + _gc_tracer->report_object_count_after_gc(is_alive_closure()); } void PSMarkSweep::mark_sweep_phase2() {
< prev index next >