--- old/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2010-03-10 14:49:37.000000000 -0800 +++ new/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2010-03-10 14:49:36.000000000 -0800 @@ -2073,7 +2073,15 @@ // Let the size policy know we're done size_policy->major_collection_end(old_gen->used_in_bytes(), gc_cause); - if (UseAdaptiveSizePolicy) { + bool free_ratio_in_effect = false; + if ((UseFreeRatioForParallelGC || + (UseFreeRatioOnlyInSystemGCForParallelGC && + gc_cause == GCCause::_java_lang_system_gc))) { + ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); + free_ratio_in_effect = heap->try_to_shrink_by_free_ratio(true); + } + + if (!free_ratio_in_effect && UseAdaptiveSizePolicy) { if (PrintAdaptiveSizePolicy) { gclog_or_tty->print("AdaptiveSizeStart: "); gclog_or_tty->stamp();