--- old/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp 2010-04-13 08:11:17.000000000 -0700 +++ new/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp 2010-04-13 08:11:16.000000000 -0700 @@ -447,7 +447,12 @@ size_t promoted = old_gen->used_in_bytes() - old_gen_used_before; size_policy->update_averages(_survivor_overflow, survived, promoted); - if (UseAdaptiveSizePolicy) { + if (PSResizeByFreeRatioWithSystemGC && + gc_cause == GCCause::_java_lang_system_gc) { + ParallelScavengeHeap* heap = (ParallelScavengeHeap*) Universe::heap(); + heap->resize_by_free_ratio(false); + + } else if (UseAdaptiveSizePolicy) { // Calculate the new survivor size and tenuring threshold if (PrintAdaptiveSizePolicy) {