src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon Feb 3 22:36:56 2014
--- new/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon Feb 3 22:36:55 2014
*** 533,544 ****
--- 533,555 ----
counters->update_survived(survived);
counters->update_promoted(promoted);
counters->update_survivor_overflowed(_survivor_overflow);
}
+ size_t max_young_size = young_gen->max_size();
+
+ // Deciding a free ratio in the young generation is tricky, so if
+ // MinHeapFreeRatio or MaxHeapFreeRatio are in use (implicating
+ // that the old generation size may have been limited because of them) we
+ // should then limit our young generation size using NewRatio to have it
+ // follow the old generation size.
+ if (MinHeapFreeRatio != 0 || MaxHeapFreeRatio != 100) {
+ max_young_size = MIN2(old_gen->capacity_in_bytes() / NewRatio, young_gen->max_size());
+ }
+
size_t survivor_limit =
! size_policy->max_survivor_size(young_gen->max_size());
! size_policy->max_survivor_size(max_young_size);
_tenuring_threshold =
size_policy->compute_survivor_space_size_and_threshold(
_survivor_overflow,
_tenuring_threshold,
survivor_limit);
*** 557,577 ****
--- 568,587 ----
}
// Do call at minor collections?
// Don't check if the size_policy is ready at this
// level. Let the size_policy check that internally.
! if (UseAdaptiveSizePolicy &&
UseAdaptiveGenerationSizePolicyAtMinorCollection &&
! if (UseAdaptiveGenerationSizePolicyAtMinorCollection &&
((gc_cause != GCCause::_java_lang_system_gc) ||
UseAdaptiveSizePolicyWithSystemGC)) {
// Calculate optimial free space amounts
assert(young_gen->max_size() >
young_gen->from_space()->capacity_in_bytes() +
young_gen->to_space()->capacity_in_bytes(),
"Sizes of space in young gen are out-of-bounds");
! size_t max_eden_size = young_gen->max_size() -
! size_t max_eden_size = max_young_size -
young_gen->from_space()->capacity_in_bytes() -
young_gen->to_space()->capacity_in_bytes();
size_policy->compute_generation_free_space(young_gen->used_in_bytes(),
young_gen->eden_space()->used_in_bytes(),
old_gen->used_in_bytes(),
src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File