1021
1022 PSCardTable* ct = heap->card_table();
1023 MemRegion old_mr = heap->old_gen()->reserved();
1024 if (young_gen_empty) {
1025 ct->clear(MemRegion(old_mr.start(), old_mr.end()));
1026 } else {
1027 ct->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1028 }
1029
1030 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1031 ClassLoaderDataGraph::purge();
1032 MetaspaceUtils::verify_metrics();
1033
1034 CodeCache::gc_epilogue();
1035 JvmtiExport::gc_epilogue();
1036
1037 #if COMPILER2_OR_JVMCI
1038 DerivedPointerTable::update_pointers();
1039 #endif
1040
1041 ReferenceProcessorPhaseTimes pt(&_gc_timer, ref_processor()->num_queues());
1042
1043 ref_processor()->enqueue_discovered_references(NULL, &pt);
1044
1045 pt.print_enqueue_phase();
1046
1047 if (ZapUnusedHeapArea) {
1048 heap->gen_mangle_unused_area();
1049 }
1050
1051 // Update time of last GC
1052 reset_millis_since_last_gc();
1053 }
1054
1055 HeapWord*
1056 PSParallelCompact::compute_dense_prefix_via_density(const SpaceId id,
1057 bool maximum_compaction)
1058 {
1059 const size_t region_size = ParallelCompactData::RegionSize;
1060 const ParallelCompactData& sd = summary_data();
1061
1062 const MutableSpace* const space = _space_info[id].space();
1063 HeapWord* const top_aligned_up = sd.region_align_up(space->top());
1064 const RegionData* const beg_cp = sd.addr_to_region_ptr(space->bottom());
1065 const RegionData* const end_cp = sd.addr_to_region_ptr(top_aligned_up);
1066
|
1021
1022 PSCardTable* ct = heap->card_table();
1023 MemRegion old_mr = heap->old_gen()->reserved();
1024 if (young_gen_empty) {
1025 ct->clear(MemRegion(old_mr.start(), old_mr.end()));
1026 } else {
1027 ct->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1028 }
1029
1030 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1031 ClassLoaderDataGraph::purge();
1032 MetaspaceUtils::verify_metrics();
1033
1034 CodeCache::gc_epilogue();
1035 JvmtiExport::gc_epilogue();
1036
1037 #if COMPILER2_OR_JVMCI
1038 DerivedPointerTable::update_pointers();
1039 #endif
1040
1041 if (ZapUnusedHeapArea) {
1042 heap->gen_mangle_unused_area();
1043 }
1044
1045 // Update time of last GC
1046 reset_millis_since_last_gc();
1047 }
1048
1049 HeapWord*
1050 PSParallelCompact::compute_dense_prefix_via_density(const SpaceId id,
1051 bool maximum_compaction)
1052 {
1053 const size_t region_size = ParallelCompactData::RegionSize;
1054 const ParallelCompactData& sd = summary_data();
1055
1056 const MutableSpace* const space = _space_info[id].space();
1057 HeapWord* const top_aligned_up = sd.region_align_up(space->top());
1058 const RegionData* const beg_cp = sd.addr_to_region_ptr(space->bottom());
1059 const RegionData* const end_cp = sd.addr_to_region_ptr(top_aligned_up);
1060
|