src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Thu Aug 29 14:32:01 2013
--- new/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Thu Aug 29 14:32:00 2013
*** 165,176 ****
--- 165,184 ----
_gc_overhead_perc(0.0) {
// Set up the region size and associated fields. Given that the
// policy is created before the heap, we have to set this up here,
- // so it's done as soon as possible.
HeapRegion::setup_heap_region_size(Arguments::min_heap_size());
+
+ // It would have been natural to pass initial_heap_byte_size() and
+ // max_heap_byte_size() to setup_heap_region_size() but those have
+ // not been set up at this point since they should be aligned with
+ // the region size. So, there is a circular dependency here. We base
+ // the region size on the heap size, but the heap size should be
+ // aligned with the region size. To get around this we use the
+ // unaligned values for the heap.
+ HeapRegion::setup_heap_region_size(InitialHeapSize, MaxHeapSize);
HeapRegionRemSet::setup_remset_size();
G1ErgoVerbose::initialize();
if (PrintAdaptiveSizePolicy) {
// Currently, we only use a single switch for all the heuristics.
src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File