Mercurial > hg > release > icedtea7-forest-2.4 > hotspot
changeset 4796:9cc209978fc0
8020155: PSR:PERF G1 not collecting old regions when humongous allocations interfer
Summary: Take _last_young_gc into account when deciding on starting a concurrent mark. Also reviewed-by: per.liden@oracle.com.
Reviewed-by: tschatzl, johnc
author | brutisso |
---|---|
date | Thu, 11 Jul 2013 11:33:27 +0200 |
parents | 79c6a69a317e |
children | f82d5b2e8342 |
files | src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp |
diffstat | 1 files changed, 2 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Fri Jul 12 16:51:50 2013 -0400 +++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Thu Jul 11 11:33:27 2013 +0200 @@ -870,7 +870,7 @@ size_t alloc_byte_size = alloc_word_size * HeapWordSize; if ((cur_used_bytes + alloc_byte_size) > marking_initiating_used_threshold) { - if (gcs_are_young()) { + if (gcs_are_young() && !_last_young_gc) { ergo_verbose5(ErgoConcCycles, "request concurrent cycle initiation", ergo_format_reason("occupancy higher than threshold") @@ -928,7 +928,7 @@ last_pause_included_initial_mark = during_initial_mark_pause(); if (last_pause_included_initial_mark) { record_concurrent_mark_init_end(0.0); - } else if (!_last_young_gc && need_to_start_conc_mark("end of GC")) { + } else if (need_to_start_conc_mark("end of GC")) { // Note: this might have already been set, if during the last // pause we decided to start a cycle but at the beginning of // this pause we decided to postpone it. That's OK.