8217327: G1 Post-Cleanup region liveness printing should not print out-of-date efficiency
Reviewed-by: tschatzl, sjohanss
This commit is contained in:
parent
e963ebd721
commit
50f9a70f0d
@ -69,6 +69,7 @@
|
|||||||
#include "runtime/prefetch.inline.hpp"
|
#include "runtime/prefetch.inline.hpp"
|
||||||
#include "services/memTracker.hpp"
|
#include "services/memTracker.hpp"
|
||||||
#include "utilities/align.hpp"
|
#include "utilities/align.hpp"
|
||||||
|
#include "utilities/formatBuffer.hpp"
|
||||||
#include "utilities/growableArray.hpp"
|
#include "utilities/growableArray.hpp"
|
||||||
|
|
||||||
bool G1CMBitMapClosure::do_addr(HeapWord* const addr) {
|
bool G1CMBitMapClosure::do_addr(HeapWord* const addr) {
|
||||||
@ -2890,8 +2891,9 @@ G1CMTask::G1CMTask(uint worker_id,
|
|||||||
#define G1PPRL_STATE_H_FORMAT " %5s"
|
#define G1PPRL_STATE_H_FORMAT " %5s"
|
||||||
#define G1PPRL_BYTE_FORMAT " " SIZE_FORMAT_W(9)
|
#define G1PPRL_BYTE_FORMAT " " SIZE_FORMAT_W(9)
|
||||||
#define G1PPRL_BYTE_H_FORMAT " %9s"
|
#define G1PPRL_BYTE_H_FORMAT " %9s"
|
||||||
#define G1PPRL_DOUBLE_FORMAT " %14.1f"
|
#define G1PPRL_DOUBLE_FORMAT "%14.1f"
|
||||||
#define G1PPRL_DOUBLE_H_FORMAT " %14s"
|
#define G1PPRL_GCEFF_FORMAT " %14s"
|
||||||
|
#define G1PPRL_GCEFF_H_FORMAT " %14s"
|
||||||
|
|
||||||
// For summary info
|
// For summary info
|
||||||
#define G1PPRL_SUM_ADDR_FORMAT(tag) " " tag ":" G1PPRL_ADDR_BASE_FORMAT
|
#define G1PPRL_SUM_ADDR_FORMAT(tag) " " tag ":" G1PPRL_ADDR_BASE_FORMAT
|
||||||
@ -2926,7 +2928,7 @@ G1PrintRegionLivenessInfoClosure::G1PrintRegionLivenessInfoClosure(const char* p
|
|||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_DOUBLE_H_FORMAT
|
G1PPRL_GCEFF_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_STATE_H_FORMAT
|
G1PPRL_STATE_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT,
|
G1PPRL_BYTE_H_FORMAT,
|
||||||
@ -2939,7 +2941,7 @@ G1PrintRegionLivenessInfoClosure::G1PrintRegionLivenessInfoClosure(const char* p
|
|||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_DOUBLE_H_FORMAT
|
G1PPRL_GCEFF_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT
|
G1PPRL_BYTE_H_FORMAT
|
||||||
G1PPRL_STATE_H_FORMAT
|
G1PPRL_STATE_H_FORMAT
|
||||||
G1PPRL_BYTE_H_FORMAT,
|
G1PPRL_BYTE_H_FORMAT,
|
||||||
@ -2964,6 +2966,7 @@ bool G1PrintRegionLivenessInfoClosure::do_heap_region(HeapRegion* r) {
|
|||||||
size_t remset_bytes = r->rem_set()->mem_size();
|
size_t remset_bytes = r->rem_set()->mem_size();
|
||||||
size_t strong_code_roots_bytes = r->rem_set()->strong_code_roots_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();
|
const char* remset_type = r->rem_set()->get_short_state_str();
|
||||||
|
FormatBuffer<16> gc_efficiency("");
|
||||||
|
|
||||||
_total_used_bytes += used_bytes;
|
_total_used_bytes += used_bytes;
|
||||||
_total_capacity_bytes += capacity_bytes;
|
_total_capacity_bytes += capacity_bytes;
|
||||||
@ -2972,20 +2975,26 @@ bool G1PrintRegionLivenessInfoClosure::do_heap_region(HeapRegion* r) {
|
|||||||
_total_remset_bytes += remset_bytes;
|
_total_remset_bytes += remset_bytes;
|
||||||
_total_strong_code_roots_bytes += strong_code_roots_bytes;
|
_total_strong_code_roots_bytes += strong_code_roots_bytes;
|
||||||
|
|
||||||
|
if(gc_eff < 0) {
|
||||||
|
gc_efficiency.append("-");
|
||||||
|
} else {
|
||||||
|
gc_efficiency.append(G1PPRL_DOUBLE_FORMAT, gc_eff);
|
||||||
|
}
|
||||||
|
|
||||||
// Print a line for this particular region.
|
// Print a line for this particular region.
|
||||||
log_trace(gc, liveness)(G1PPRL_LINE_PREFIX
|
log_trace(gc, liveness)(G1PPRL_LINE_PREFIX
|
||||||
G1PPRL_TYPE_FORMAT
|
G1PPRL_TYPE_FORMAT
|
||||||
G1PPRL_ADDR_BASE_FORMAT
|
G1PPRL_ADDR_BASE_FORMAT
|
||||||
G1PPRL_BYTE_FORMAT
|
G1PPRL_BYTE_FORMAT
|
||||||
G1PPRL_BYTE_FORMAT
|
G1PPRL_BYTE_FORMAT
|
||||||
G1PPRL_BYTE_FORMAT
|
G1PPRL_BYTE_FORMAT
|
||||||
G1PPRL_DOUBLE_FORMAT
|
G1PPRL_GCEFF_FORMAT
|
||||||
G1PPRL_BYTE_FORMAT
|
G1PPRL_BYTE_FORMAT
|
||||||
G1PPRL_STATE_FORMAT
|
G1PPRL_STATE_FORMAT
|
||||||
G1PPRL_BYTE_FORMAT,
|
G1PPRL_BYTE_FORMAT,
|
||||||
type, p2i(bottom), p2i(end),
|
type, p2i(bottom), p2i(end),
|
||||||
used_bytes, prev_live_bytes, next_live_bytes, gc_eff,
|
used_bytes, prev_live_bytes, next_live_bytes, gc_efficiency.buffer(),
|
||||||
remset_bytes, remset_type, strong_code_roots_bytes);
|
remset_bytes, remset_type, strong_code_roots_bytes);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -139,7 +139,7 @@ void HeapRegion::hr_clear(bool clear_space) {
|
|||||||
if (clear_space) clear(SpaceDecorator::Mangle);
|
if (clear_space) clear(SpaceDecorator::Mangle);
|
||||||
|
|
||||||
_evacuation_failed = false;
|
_evacuation_failed = false;
|
||||||
_gc_efficiency = 0.0;
|
_gc_efficiency = -1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HeapRegion::clear_cardtable() {
|
void HeapRegion::clear_cardtable() {
|
||||||
@ -255,7 +255,7 @@ HeapRegion::HeapRegion(uint hrm_index,
|
|||||||
_prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
|
_prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
|
||||||
_prev_marked_bytes(0), _next_marked_bytes(0),
|
_prev_marked_bytes(0), _next_marked_bytes(0),
|
||||||
_young_index_in_cset(-1),
|
_young_index_in_cset(-1),
|
||||||
_surv_rate_group(NULL), _age_index(G1SurvRateGroup::InvalidAgeIndex), _gc_efficiency(0.0),
|
_surv_rate_group(NULL), _age_index(G1SurvRateGroup::InvalidAgeIndex), _gc_efficiency(-1.0),
|
||||||
_node_index(G1NUMA::UnknownNodeIndex)
|
_node_index(G1NUMA::UnknownNodeIndex)
|
||||||
{
|
{
|
||||||
assert(Universe::on_page_boundary(mr.start()) && Universe::on_page_boundary(mr.end()),
|
assert(Universe::on_page_boundary(mr.start()) && Universe::on_page_boundary(mr.end()),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -268,6 +268,7 @@ inline HeapWord* HeapRegion::allocate_no_bot_updates(size_t min_word_size,
|
|||||||
inline void HeapRegion::note_start_of_marking() {
|
inline void HeapRegion::note_start_of_marking() {
|
||||||
_next_marked_bytes = 0;
|
_next_marked_bytes = 0;
|
||||||
_next_top_at_mark_start = top();
|
_next_top_at_mark_start = top();
|
||||||
|
_gc_efficiency = -1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void HeapRegion::note_end_of_marking() {
|
inline void HeapRegion::note_end_of_marking() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user