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"); |