--- old/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2010-04-27 08:04:19.000000000 -0700 +++ new/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2010-04-27 08:04:19.000000000 -0700 @@ -2079,7 +2079,12 @@ // 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(); @@ -2132,6 +2137,9 @@ 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) {