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();