src/hotspot/share/gc/g1/g1CollectedHeap.cpp

Print this page




1029 
1030 void G1CollectedHeap::verify_before_full_collection(bool explicit_gc) {
1031   assert(!GCCause::is_user_requested_gc(gc_cause()) || explicit_gc, "invariant");
1032   assert(used() == recalculate_used(), "Should be equal");
1033   _verifier->verify_region_sets_optional();
1034   _verifier->verify_before_gc(G1HeapVerifier::G1VerifyFull);
1035   _verifier->check_bitmaps("Full GC Start");
1036 }
1037 
1038 void G1CollectedHeap::prepare_heap_for_mutators() {
1039   // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1040   ClassLoaderDataGraph::purge();
1041   MetaspaceUtils::verify_metrics();
1042 
1043   // Prepare heap for normal collections.
1044   assert(num_free_regions() == 0, "we should not have added any free regions");
1045   rebuild_region_sets(false /* free_list_only */);
1046   abort_refinement();
1047   resize_if_necessary_after_full_collection();
1048 



1049   // Rebuild the strong code root lists for each region
1050   rebuild_strong_code_roots();
1051 
1052   // Start a new incremental collection set for the next pause
1053   start_new_collection_set();
1054 
1055   _allocator->init_mutator_alloc_region();
1056 
1057   // Post collection state updates.
1058   MetaspaceGC::compute_new_size();
1059 }
1060 
1061 void G1CollectedHeap::abort_refinement() {
1062   if (_hot_card_cache->use_cache()) {
1063     _hot_card_cache->reset_hot_cache();
1064   }
1065 
1066   // Discard all remembered set updates.
1067   G1BarrierSet::dirty_card_queue_set().abandon_logs();
1068   assert(dirty_card_queue_set().completed_buffers_num() == 0, "DCQS should be empty");




1029 
1030 void G1CollectedHeap::verify_before_full_collection(bool explicit_gc) {
1031   assert(!GCCause::is_user_requested_gc(gc_cause()) || explicit_gc, "invariant");
1032   assert(used() == recalculate_used(), "Should be equal");
1033   _verifier->verify_region_sets_optional();
1034   _verifier->verify_before_gc(G1HeapVerifier::G1VerifyFull);
1035   _verifier->check_bitmaps("Full GC Start");
1036 }
1037 
1038 void G1CollectedHeap::prepare_heap_for_mutators() {
1039   // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1040   ClassLoaderDataGraph::purge();
1041   MetaspaceUtils::verify_metrics();
1042 
1043   // Prepare heap for normal collections.
1044   assert(num_free_regions() == 0, "we should not have added any free regions");
1045   rebuild_region_sets(false /* free_list_only */);
1046   abort_refinement();
1047   resize_if_necessary_after_full_collection();
1048 
1049   // Purge code root memory
1050   purge_code_root_memory();
1051 
1052   // Rebuild the strong code root lists for each region
1053   rebuild_strong_code_roots();
1054 
1055   // Start a new incremental collection set for the next pause
1056   start_new_collection_set();
1057 
1058   _allocator->init_mutator_alloc_region();
1059 
1060   // Post collection state updates.
1061   MetaspaceGC::compute_new_size();
1062 }
1063 
1064 void G1CollectedHeap::abort_refinement() {
1065   if (_hot_card_cache->use_cache()) {
1066     _hot_card_cache->reset_hot_cache();
1067   }
1068 
1069   // Discard all remembered set updates.
1070   G1BarrierSet::dirty_card_queue_set().abandon_logs();
1071   assert(dirty_card_queue_set().completed_buffers_num() == 0, "DCQS should be empty");