src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp

Print this page

        

@@ -237,11 +237,19 @@
     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) {
+    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();
         gclog_or_tty->print_cr(" collection: %d ",