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

Print this page

        

@@ -241,12 +241,16 @@
     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) {
+    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();
         gclog_or_tty->print_cr(" collection: %d ",
                        heap->total_collections());

@@ -293,10 +297,13 @@
       }
       if (PrintAdaptiveSizePolicy) {
         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) {
       heap->gc_policy_counters()->update_counters();
       heap->gc_policy_counters()->update_old_capacity(