151 DefNewGeneration::DefNewGeneration(ReservedSpace rs,
152 size_t initial_size,
153 size_t min_size,
154 size_t max_size,
155 const char* policy)
156 : Generation(rs, initial_size),
157 _preserved_marks_set(false /* in_c_heap */),
158 _promo_failure_drain_in_progress(false),
159 _should_allocate_from_space(false)
160 {
161 MemRegion cmr((HeapWord*)_virtual_space.low(),
162 (HeapWord*)_virtual_space.high());
163 GenCollectedHeap* gch = GenCollectedHeap::heap();
164
165 gch->rem_set()->resize_covered_region(cmr);
166
167 _eden_space = new ContiguousSpace();
168 _from_space = new ContiguousSpace();
169 _to_space = new ContiguousSpace();
170
171 if (_eden_space == NULL || _from_space == NULL || _to_space == NULL) {
172 vm_exit_during_initialization("Could not allocate a new gen space");
173 }
174
175 // Compute the maximum eden and survivor space sizes. These sizes
176 // are computed assuming the entire reserved space is committed.
177 // These values are exported as performance counters.
178 uintx size = _virtual_space.reserved_size();
179 _max_survivor_size = compute_survivor_size(size, SpaceAlignment);
180 _max_eden_size = size - (2*_max_survivor_size);
181
182 // allocate the performance counters
183
184 // Generation counters -- generation 0, 3 subspaces
185 _gen_counters = new GenerationCounters("new", 0, 3,
186 min_size, max_size, &_virtual_space);
187 _gc_counters = new CollectorCounters(policy, 0);
188
189 _eden_counters = new CSpaceCounters("eden", 0, _max_eden_size, _eden_space,
190 _gen_counters);
191 _from_counters = new CSpaceCounters("s0", 1, _max_survivor_size, _from_space,
192 _gen_counters);
193 _to_counters = new CSpaceCounters("s1", 2, _max_survivor_size, _to_space,
194 _gen_counters);
|
151 DefNewGeneration::DefNewGeneration(ReservedSpace rs,
152 size_t initial_size,
153 size_t min_size,
154 size_t max_size,
155 const char* policy)
156 : Generation(rs, initial_size),
157 _preserved_marks_set(false /* in_c_heap */),
158 _promo_failure_drain_in_progress(false),
159 _should_allocate_from_space(false)
160 {
161 MemRegion cmr((HeapWord*)_virtual_space.low(),
162 (HeapWord*)_virtual_space.high());
163 GenCollectedHeap* gch = GenCollectedHeap::heap();
164
165 gch->rem_set()->resize_covered_region(cmr);
166
167 _eden_space = new ContiguousSpace();
168 _from_space = new ContiguousSpace();
169 _to_space = new ContiguousSpace();
170
171 // Compute the maximum eden and survivor space sizes. These sizes
172 // are computed assuming the entire reserved space is committed.
173 // These values are exported as performance counters.
174 uintx size = _virtual_space.reserved_size();
175 _max_survivor_size = compute_survivor_size(size, SpaceAlignment);
176 _max_eden_size = size - (2*_max_survivor_size);
177
178 // allocate the performance counters
179
180 // Generation counters -- generation 0, 3 subspaces
181 _gen_counters = new GenerationCounters("new", 0, 3,
182 min_size, max_size, &_virtual_space);
183 _gc_counters = new CollectorCounters(policy, 0);
184
185 _eden_counters = new CSpaceCounters("eden", 0, _max_eden_size, _eden_space,
186 _gen_counters);
187 _from_counters = new CSpaceCounters("s0", 1, _max_survivor_size, _from_space,
188 _gen_counters);
189 _to_counters = new CSpaceCounters("s1", 2, _max_survivor_size, _to_space,
190 _gen_counters);
|