1.1 --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu Feb 27 19:01:32 2020 +0000 1.2 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Tue Mar 03 12:57:23 2020 +0000 1.3 @@ -3579,6 +3579,28 @@ 1.4 } 1.5 #endif // PRODUCT 1.6 1.7 +G1HeapSummary G1CollectedHeap::create_g1_heap_summary() { 1.8 + 1.9 + size_t eden_used_bytes = _young_list->eden_used_bytes(); 1.10 + size_t survivor_used_bytes = _young_list->survivor_used_bytes(); 1.11 + size_t heap_used = Heap_lock->owned_by_self() ? used() : used_unlocked(); 1.12 + 1.13 + size_t eden_capacity_bytes = 1.14 + (g1_policy()->young_list_target_length() * HeapRegion::GrainBytes) - survivor_used_bytes; 1.15 + 1.16 + VirtualSpaceSummary heap_summary = create_heap_space_summary(); 1.17 + return G1HeapSummary(heap_summary, heap_used, eden_used_bytes, 1.18 + eden_capacity_bytes, survivor_used_bytes, num_regions()); 1.19 +} 1.20 + 1.21 +void G1CollectedHeap::trace_heap(GCWhen::Type when, GCTracer* gc_tracer) { 1.22 + const G1HeapSummary& heap_summary = create_g1_heap_summary(); 1.23 + gc_tracer->report_gc_heap_summary(when, heap_summary); 1.24 + 1.25 + const MetaspaceSummary& metaspace_summary = create_metaspace_summary(); 1.26 + gc_tracer->report_metaspace_summary(when, metaspace_summary); 1.27 +} 1.28 + 1.29 G1CollectedHeap* G1CollectedHeap::heap() { 1.30 assert(_sh->kind() == CollectedHeap::G1CollectedHeap, 1.31 "not a garbage-first heap"); 1.32 @@ -4096,7 +4118,7 @@ 1.33 g1_policy()->print_collection_set(g1_policy()->inc_cset_head(), gclog_or_tty); 1.34 #endif // YOUNG_LIST_VERBOSE 1.35 1.36 - g1_policy()->record_collection_pause_start(sample_start_time_sec); 1.37 + g1_policy()->record_collection_pause_start(sample_start_time_sec, *_gc_tracer_stw); 1.38 1.39 double scan_wait_start = os::elapsedTime(); 1.40 // We have to wait until the CM threads finish scanning the