src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp

Print this page
rev 2691 : [mq]: g1-reference-processing


 181     size_policy->major_collection_begin();
 182 
 183     // When collecting the permanent generation methodOops may be moving,
 184     // so we either have to flush all bcp data or convert it into bci.
 185     CodeCache::gc_prologue();
 186     Threads::gc_prologue();
 187     BiasedLocking::preserve_marks();
 188 
 189     // Capture heap size before collection for printing.
 190     size_t prev_used = heap->used();
 191 
 192     // Capture perm gen size before collection for sizing.
 193     size_t perm_gen_prev_used = perm_gen->used_in_bytes();
 194 
 195     // For PrintGCDetails
 196     size_t old_gen_prev_used = old_gen->used_in_bytes();
 197     size_t young_gen_prev_used = young_gen->used_in_bytes();
 198 
 199     allocate_stacks();
 200 
 201     NOT_PRODUCT(ref_processor()->verify_no_references_recorded());
 202     COMPILER2_PRESENT(DerivedPointerTable::clear());
 203 
 204     ref_processor()->enable_discovery();
 205     ref_processor()->setup_policy(clear_all_softrefs);
 206 
 207     mark_sweep_phase1(clear_all_softrefs);
 208 
 209     mark_sweep_phase2();
 210 
 211     // Don't add any more derived pointers during phase3
 212     COMPILER2_PRESENT(assert(DerivedPointerTable::is_active(), "Sanity"));
 213     COMPILER2_PRESENT(DerivedPointerTable::set_active(false));
 214 
 215     mark_sweep_phase3();
 216 
 217     mark_sweep_phase4();
 218 
 219     restore_marks();
 220 
 221     deallocate_stacks();
 222 
 223     if (ZapUnusedHeapArea) {
 224       // Do a complete mangle (top to end) because the usage for




 181     size_policy->major_collection_begin();
 182 
 183     // When collecting the permanent generation methodOops may be moving,
 184     // so we either have to flush all bcp data or convert it into bci.
 185     CodeCache::gc_prologue();
 186     Threads::gc_prologue();
 187     BiasedLocking::preserve_marks();
 188 
 189     // Capture heap size before collection for printing.
 190     size_t prev_used = heap->used();
 191 
 192     // Capture perm gen size before collection for sizing.
 193     size_t perm_gen_prev_used = perm_gen->used_in_bytes();
 194 
 195     // For PrintGCDetails
 196     size_t old_gen_prev_used = old_gen->used_in_bytes();
 197     size_t young_gen_prev_used = young_gen->used_in_bytes();
 198 
 199     allocate_stacks();
 200 

 201     COMPILER2_PRESENT(DerivedPointerTable::clear());
 202 
 203     ref_processor()->enable_discovery(true /*verify_disabled*/, true /*verify_no_refs*/);
 204     ref_processor()->setup_policy(clear_all_softrefs);
 205 
 206     mark_sweep_phase1(clear_all_softrefs);
 207 
 208     mark_sweep_phase2();
 209 
 210     // Don't add any more derived pointers during phase3
 211     COMPILER2_PRESENT(assert(DerivedPointerTable::is_active(), "Sanity"));
 212     COMPILER2_PRESENT(DerivedPointerTable::set_active(false));
 213 
 214     mark_sweep_phase3();
 215 
 216     mark_sweep_phase4();
 217 
 218     restore_marks();
 219 
 220     deallocate_stacks();
 221 
 222     if (ZapUnusedHeapArea) {
 223       // Do a complete mangle (top to end) because the usage for