--- old/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp 2018-03-28 17:17:02.786928044 +0200 +++ new/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp 2018-03-28 17:17:02.522919902 +0200 @@ -2824,6 +2824,8 @@ // For per-region info #define G1PPRL_TYPE_FORMAT " %-4s" #define G1PPRL_TYPE_H_FORMAT " %4s" +#define G1PPRL_STATE_FORMAT " %-5s" +#define G1PPRL_STATE_H_FORMAT " %5s" #define G1PPRL_BYTE_FORMAT " " SIZE_FORMAT_W(9) #define G1PPRL_BYTE_H_FORMAT " %9s" #define G1PPRL_DOUBLE_FORMAT " %14.1f" @@ -2860,10 +2862,11 @@ G1PPRL_BYTE_H_FORMAT G1PPRL_DOUBLE_H_FORMAT G1PPRL_BYTE_H_FORMAT + G1PPRL_STATE_H_FORMAT G1PPRL_BYTE_H_FORMAT, "type", "address-range", "used", "prev-live", "next-live", "gc-eff", - "remset", "code-roots"); + "remset", "state", "code-roots"); log_trace(gc, liveness)(G1PPRL_LINE_PREFIX G1PPRL_TYPE_H_FORMAT G1PPRL_ADDR_BASE_H_FORMAT @@ -2872,10 +2875,11 @@ G1PPRL_BYTE_H_FORMAT G1PPRL_DOUBLE_H_FORMAT G1PPRL_BYTE_H_FORMAT + G1PPRL_STATE_H_FORMAT G1PPRL_BYTE_H_FORMAT, "", "", "(bytes)", "(bytes)", "(bytes)", "(bytes/ms)", - "(bytes)", "(bytes)"); + "(bytes)", "", "(bytes)"); } bool G1PrintRegionLivenessInfoClosure::do_heap_region(HeapRegion* r) { @@ -2889,6 +2893,7 @@ double gc_eff = r->gc_efficiency(); size_t remset_bytes = r->rem_set()->mem_size(); size_t strong_code_roots_bytes = r->rem_set()->strong_code_roots_mem_size(); + const char* remset_type = r->rem_set()->get_short_state_str(); _total_used_bytes += used_bytes; _total_capacity_bytes += capacity_bytes; @@ -2906,10 +2911,11 @@ G1PPRL_BYTE_FORMAT G1PPRL_DOUBLE_FORMAT G1PPRL_BYTE_FORMAT + G1PPRL_STATE_FORMAT G1PPRL_BYTE_FORMAT, type, p2i(bottom), p2i(end), used_bytes, prev_live_bytes, next_live_bytes, gc_eff, - remset_bytes, strong_code_roots_bytes); + remset_bytes, remset_type, strong_code_roots_bytes); return false; } --- old/src/hotspot/share/gc/g1/heapRegionRemSet.cpp 2018-03-28 17:17:04.059967305 +0200 +++ new/src/hotspot/share/gc/g1/heapRegionRemSet.cpp 2018-03-28 17:17:03.800959317 +0200 @@ -40,6 +40,7 @@ #include "utilities/growableArray.hpp" const char* HeapRegionRemSet::_state_strings[] = {"Untracked", "Updating", "Complete"}; +const char* HeapRegionRemSet::_short_state_strings[] = {"UNTRA", "UPDAT", "CMPLT"}; class PerRegionTable: public CHeapObj { friend class OtherRegionsTable; --- old/src/hotspot/share/gc/g1/heapRegionRemSet.hpp 2018-03-28 17:17:05.145000767 +0200 +++ new/src/hotspot/share/gc/g1/heapRegionRemSet.hpp 2018-03-28 17:17:04.885992779 +0200 @@ -224,9 +224,11 @@ RemSetState _state; static const char* _state_strings[]; + static const char* _short_state_strings[]; public: const char* get_state_str() const { return _state_strings[_state]; } + const char* get_short_state_str() const { return _short_state_strings[_state]; } bool is_tracked() { return _state != Untracked; } bool is_updating() { return _state == Updating; }