< prev index next >

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

Print this page
rev 12906 : [mq]: gc_interface


1000   }
1001 
1002   MutableSpace* const eden_space = _space_info[eden_space_id].space();
1003   MutableSpace* const from_space = _space_info[from_space_id].space();
1004   MutableSpace* const to_space   = _space_info[to_space_id].space();
1005 
1006   ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
1007   bool eden_empty = eden_space->is_empty();
1008   if (!eden_empty) {
1009     eden_empty = absorb_live_data_from_eden(heap->size_policy(),
1010                                             heap->young_gen(), heap->old_gen());
1011   }
1012 
1013   // Update heap occupancy information which is used as input to the soft ref
1014   // clearing policy at the next gc.
1015   Universe::update_heap_info_at_gc();
1016 
1017   bool young_gen_empty = eden_empty && from_space->is_empty() &&
1018     to_space->is_empty();
1019 
1020   ModRefBarrierSet* modBS = barrier_set_cast<ModRefBarrierSet>(heap->barrier_set());
1021   MemRegion old_mr = heap->old_gen()->reserved();
1022   if (young_gen_empty) {
1023     modBS->clear(MemRegion(old_mr.start(), old_mr.end()));
1024   } else {
1025     modBS->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1026   }
1027 
1028   // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1029   ClassLoaderDataGraph::purge();
1030   MetaspaceAux::verify_metrics();
1031 
1032   CodeCache::gc_epilogue();
1033   JvmtiExport::gc_epilogue();
1034 
1035 #if defined(COMPILER2) || INCLUDE_JVMCI
1036   DerivedPointerTable::update_pointers();
1037 #endif
1038 
1039   ref_processor()->enqueue_discovered_references(NULL);
1040 
1041   if (ZapUnusedHeapArea) {
1042     heap->gen_mangle_unused_area();
1043   }
1044 
1045   // Update time of last GC




1000   }
1001 
1002   MutableSpace* const eden_space = _space_info[eden_space_id].space();
1003   MutableSpace* const from_space = _space_info[from_space_id].space();
1004   MutableSpace* const to_space   = _space_info[to_space_id].space();
1005 
1006   ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
1007   bool eden_empty = eden_space->is_empty();
1008   if (!eden_empty) {
1009     eden_empty = absorb_live_data_from_eden(heap->size_policy(),
1010                                             heap->young_gen(), heap->old_gen());
1011   }
1012 
1013   // Update heap occupancy information which is used as input to the soft ref
1014   // clearing policy at the next gc.
1015   Universe::update_heap_info_at_gc();
1016 
1017   bool young_gen_empty = eden_empty && from_space->is_empty() &&
1018     to_space->is_empty();
1019 
1020   PSCardTable* ct = heap->card_table();
1021   MemRegion old_mr = heap->old_gen()->reserved();
1022   if (young_gen_empty) {
1023     ct->clear(MemRegion(old_mr.start(), old_mr.end()));
1024   } else {
1025     ct->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1026   }
1027 
1028   // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1029   ClassLoaderDataGraph::purge();
1030   MetaspaceAux::verify_metrics();
1031 
1032   CodeCache::gc_epilogue();
1033   JvmtiExport::gc_epilogue();
1034 
1035 #if defined(COMPILER2) || INCLUDE_JVMCI
1036   DerivedPointerTable::update_pointers();
1037 #endif
1038 
1039   ref_processor()->enqueue_discovered_references(NULL);
1040 
1041   if (ZapUnusedHeapArea) {
1042     heap->gen_mangle_unused_area();
1043   }
1044 
1045   // Update time of last GC


< prev index next >