237 // input to soft ref clearing policy at the next gc.
238 Universe::update_heap_info_at_gc();
239
240 survivors_empty = young_gen->from_space()->is_empty() &&
241 young_gen->to_space()->is_empty();
242 young_gen_empty = eden_empty && survivors_empty;
243
244 PSCardTable* card_table = heap->card_table();
245 MemRegion old_mr = heap->old_gen()->reserved();
246 if (young_gen_empty) {
247 card_table->clear(MemRegion(old_mr.start(), old_mr.end()));
248 } else {
249 card_table->invalidate(MemRegion(old_mr.start(), old_mr.end()));
250 }
251
252 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
253 ClassLoaderDataGraph::purge();
254 MetaspaceUtils::verify_metrics();
255
256 BiasedLocking::restore_marks();
257 heap->prune_nmethods();
258 JvmtiExport::gc_epilogue();
259
260 #if COMPILER2_OR_JVMCI
261 DerivedPointerTable::update_pointers();
262 #endif
263
264 assert(!ref_processor()->discovery_enabled(), "Should have been disabled earlier");
265
266 // Update time of last GC
267 reset_millis_since_last_gc();
268
269 // Let the size policy know we're done
270 size_policy->major_collection_end(old_gen->used_in_bytes(), gc_cause);
271
272 if (UseAdaptiveSizePolicy) {
273
274 log_debug(gc, ergo)("AdaptiveSizeStart: collection: %d ", heap->total_collections());
275 log_trace(gc, ergo)("old_gen_capacity: " SIZE_FORMAT " young_gen_capacity: " SIZE_FORMAT,
276 old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes());
277
|
237 // input to soft ref clearing policy at the next gc.
238 Universe::update_heap_info_at_gc();
239
240 survivors_empty = young_gen->from_space()->is_empty() &&
241 young_gen->to_space()->is_empty();
242 young_gen_empty = eden_empty && survivors_empty;
243
244 PSCardTable* card_table = heap->card_table();
245 MemRegion old_mr = heap->old_gen()->reserved();
246 if (young_gen_empty) {
247 card_table->clear(MemRegion(old_mr.start(), old_mr.end()));
248 } else {
249 card_table->invalidate(MemRegion(old_mr.start(), old_mr.end()));
250 }
251
252 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
253 ClassLoaderDataGraph::purge();
254 MetaspaceUtils::verify_metrics();
255
256 BiasedLocking::restore_marks();
257 heap->prune_scavengable_nmethods();
258 JvmtiExport::gc_epilogue();
259
260 #if COMPILER2_OR_JVMCI
261 DerivedPointerTable::update_pointers();
262 #endif
263
264 assert(!ref_processor()->discovery_enabled(), "Should have been disabled earlier");
265
266 // Update time of last GC
267 reset_millis_since_last_gc();
268
269 // Let the size policy know we're done
270 size_policy->major_collection_end(old_gen->used_in_bytes(), gc_cause);
271
272 if (UseAdaptiveSizePolicy) {
273
274 log_debug(gc, ergo)("AdaptiveSizeStart: collection: %d ", heap->total_collections());
275 log_trace(gc, ergo)("old_gen_capacity: " SIZE_FORMAT " young_gen_capacity: " SIZE_FORMAT,
276 old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes());
277
|