< prev index next >

src/hotspot/share/gc/g1/g1FullCollector.cpp

Print this page

        

*** 72,82 **** _oop_queue_set(_num_workers), _array_queue_set(_num_workers), _preserved_marks_set(true), _reference_processor(reference_processor), _serial_compaction_point(), ! _is_alive_mutator(_reference_processor, NULL) { assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint"); _preserved_marks_set.init(_num_workers); _markers = NEW_C_HEAP_ARRAY(G1FullGCMarker*, _num_workers, mtGC); _compaction_points = NEW_C_HEAP_ARRAY(G1FullGCCompactionPoint*, _num_workers, mtGC); --- 72,83 ---- _oop_queue_set(_num_workers), _array_queue_set(_num_workers), _preserved_marks_set(true), _reference_processor(reference_processor), _serial_compaction_point(), ! _is_alive(_mark_bitmap), ! _is_alive_mutator(_reference_processor, &_is_alive) { assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint"); _preserved_marks_set.init(_num_workers); _markers = NEW_C_HEAP_ARRAY(G1FullGCMarker*, _num_workers, mtGC); _compaction_points = NEW_C_HEAP_ARRAY(G1FullGCCompactionPoint*, _num_workers, mtGC);
*** 151,179 **** // Process references discovered during marking. G1FullGCReferenceProcessingExecutor reference_processing(this); reference_processing.execute(scope()->timer(), scope()->tracer()); // Weak oops cleanup. - G1IsAliveClosure is_alive(mark_bitmap()); { GCTraceTime(Debug, gc, phases) trace("Phase 1: Weak Processing", scope()->timer()); ! WeakProcessor::weak_oops_do(&is_alive, &do_nothing_cl); } // Class unloading and cleanup. if (ClassUnloading) { GCTraceTime(Debug, gc, phases) debug("Phase 1: Class Unloading and Cleanup", scope()->timer()); // Unload classes and purge the SystemDictionary. ! bool purged_class = SystemDictionary::do_unloading(&is_alive, scope()->timer()); ! G1CollectedHeap::heap()->complete_cleaning(&is_alive, purged_class); } else { GCTraceTime(Debug, gc, phases) debug("Phase 1: String and Symbol Tables Cleanup", scope()->timer()); // If no class unloading just clean out strings and symbols. ! G1CollectedHeap::heap()->partial_cleaning(&is_alive, true, true, G1StringDedup::is_enabled()); } ! scope()->tracer()->report_object_count_after_gc(&is_alive); } void G1FullCollector::prepare_compaction_common() { G1FullGCPrepareTask task(this); run_task(&task); --- 152,179 ---- // Process references discovered during marking. G1FullGCReferenceProcessingExecutor reference_processing(this); reference_processing.execute(scope()->timer(), scope()->tracer()); // Weak oops cleanup. { GCTraceTime(Debug, gc, phases) trace("Phase 1: Weak Processing", scope()->timer()); ! WeakProcessor::weak_oops_do(&_is_alive, &do_nothing_cl); } // Class unloading and cleanup. if (ClassUnloading) { GCTraceTime(Debug, gc, phases) debug("Phase 1: Class Unloading and Cleanup", scope()->timer()); // Unload classes and purge the SystemDictionary. ! bool purged_class = SystemDictionary::do_unloading(&_is_alive, scope()->timer()); ! G1CollectedHeap::heap()->complete_cleaning(&_is_alive, purged_class); } else { GCTraceTime(Debug, gc, phases) debug("Phase 1: String and Symbol Tables Cleanup", scope()->timer()); // If no class unloading just clean out strings and symbols. ! G1CollectedHeap::heap()->partial_cleaning(&_is_alive, true, true, G1StringDedup::is_enabled()); } ! scope()->tracer()->report_object_count_after_gc(&_is_alive); } void G1FullCollector::prepare_compaction_common() { G1FullGCPrepareTask task(this); run_task(&task);
< prev index next >