src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp
Print this page
@@ -241,12 +241,16 @@
reset_millis_since_last_gc();
// Let the size policy know we're done
size_policy->major_collection_end(old_gen->used_in_bytes(), gc_cause);
- if (UseAdaptiveSizePolicy) {
+ if (PSResizeByFreeRatioWithSystemGC &&
+ gc_cause == GCCause::_java_lang_system_gc) {
+ ParallelScavengeHeap* heap = (ParallelScavengeHeap*) Universe::heap();
+ heap->resize_by_free_ratio(true);
+ } else if (UseAdaptiveSizePolicy) {
if (PrintAdaptiveSizePolicy) {
gclog_or_tty->print("AdaptiveSizeStart: ");
gclog_or_tty->stamp();
gclog_or_tty->print_cr(" collection: %d ",
heap->total_collections());
@@ -293,10 +297,13 @@
}
if (PrintAdaptiveSizePolicy) {
gclog_or_tty->print_cr("AdaptiveSizeStop: collection: %d ",
heap->total_collections());
}
+ } else {
+ ParallelScavengeHeap* heap = (ParallelScavengeHeap*) Universe::heap();
+ heap->resize_by_free_ratio(true);
}
if (UsePerfData) {
heap->gc_policy_counters()->update_counters();
heap->gc_policy_counters()->update_old_capacity(