< prev index next >

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

Print this page
rev 12906 : [mq]: gc_interface


 216 
 217     if (ZapUnusedHeapArea) {
 218       // Do a complete mangle (top to end) because the usage for
 219       // scratch does not maintain a top pointer.
 220       young_gen->to_space()->mangle_unused_area_complete();
 221     }
 222 
 223     eden_empty = young_gen->eden_space()->is_empty();
 224     if (!eden_empty) {
 225       eden_empty = absorb_live_data_from_eden(size_policy, young_gen, old_gen);
 226     }
 227 
 228     // Update heap occupancy information which is used as
 229     // input to soft ref clearing policy at the next gc.
 230     Universe::update_heap_info_at_gc();
 231 
 232     survivors_empty = young_gen->from_space()->is_empty() &&
 233                       young_gen->to_space()->is_empty();
 234     young_gen_empty = eden_empty && survivors_empty;
 235 
 236     ModRefBarrierSet* modBS = barrier_set_cast<ModRefBarrierSet>(heap->barrier_set());
 237     MemRegion old_mr = heap->old_gen()->reserved();
 238     if (young_gen_empty) {
 239       modBS->clear(MemRegion(old_mr.start(), old_mr.end()));
 240     } else {
 241       modBS->invalidate(MemRegion(old_mr.start(), old_mr.end()));
 242     }
 243 
 244     // Delete metaspaces for unloaded class loaders and clean up loader_data graph
 245     ClassLoaderDataGraph::purge();
 246     MetaspaceAux::verify_metrics();
 247 
 248     BiasedLocking::restore_marks();
 249     CodeCache::gc_epilogue();
 250     JvmtiExport::gc_epilogue();
 251 
 252 #if defined(COMPILER2) || INCLUDE_JVMCI
 253     DerivedPointerTable::update_pointers();
 254 #endif
 255 
 256     ref_processor()->enqueue_discovered_references(NULL);
 257 
 258     // Update time of last GC
 259     reset_millis_since_last_gc();
 260 
 261     // Let the size policy know we're done




 216 
 217     if (ZapUnusedHeapArea) {
 218       // Do a complete mangle (top to end) because the usage for
 219       // scratch does not maintain a top pointer.
 220       young_gen->to_space()->mangle_unused_area_complete();
 221     }
 222 
 223     eden_empty = young_gen->eden_space()->is_empty();
 224     if (!eden_empty) {
 225       eden_empty = absorb_live_data_from_eden(size_policy, young_gen, old_gen);
 226     }
 227 
 228     // Update heap occupancy information which is used as
 229     // input to soft ref clearing policy at the next gc.
 230     Universe::update_heap_info_at_gc();
 231 
 232     survivors_empty = young_gen->from_space()->is_empty() &&
 233                       young_gen->to_space()->is_empty();
 234     young_gen_empty = eden_empty && survivors_empty;
 235 
 236     PSCardTable* card_table = heap->card_table();
 237     MemRegion old_mr = heap->old_gen()->reserved();
 238     if (young_gen_empty) {
 239       card_table->clear(MemRegion(old_mr.start(), old_mr.end()));
 240     } else {
 241       card_table->invalidate(MemRegion(old_mr.start(), old_mr.end()));
 242     }
 243 
 244     // Delete metaspaces for unloaded class loaders and clean up loader_data graph
 245     ClassLoaderDataGraph::purge();
 246     MetaspaceAux::verify_metrics();
 247 
 248     BiasedLocking::restore_marks();
 249     CodeCache::gc_epilogue();
 250     JvmtiExport::gc_epilogue();
 251 
 252 #if defined(COMPILER2) || INCLUDE_JVMCI
 253     DerivedPointerTable::update_pointers();
 254 #endif
 255 
 256     ref_processor()->enqueue_discovered_references(NULL);
 257 
 258     // Update time of last GC
 259     reset_millis_since_last_gc();
 260 
 261     // Let the size policy know we're done


< prev index next >