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

Print this page

        

@@ -445,11 +445,19 @@
 
       size_t survived = young_gen->from_space()->used_in_bytes();
       size_t promoted = old_gen->used_in_bytes() - old_gen_used_before;
       size_policy->update_averages(_survivor_overflow, survived, promoted);
 
-      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(false);
+      }
+
+      if (!free_ratio_in_effect && UseAdaptiveSizePolicy) {
         // Calculate the new survivor size and tenuring threshold
 
         if (PrintAdaptiveSizePolicy) {
           gclog_or_tty->print("AdaptiveSizeStart: ");
           gclog_or_tty->stamp();