222 modBS->clear(MemRegion(perm_mr.start(), old_mr.end()));
223 } else {
224 modBS->invalidate(MemRegion(perm_mr.start(), old_mr.end()));
225 }
226 }
227
228 BiasedLocking::restore_marks();
229 Threads::gc_epilogue();
230 CodeCache::gc_epilogue();
231
232 COMPILER2_PRESENT(DerivedPointerTable::update_pointers());
233
234 ref_processor()->enqueue_discovered_references(NULL);
235
236 // Update time of last GC
237 reset_millis_since_last_gc();
238
239 // Let the size policy know we're done
240 size_policy->major_collection_end(old_gen->used_in_bytes(), gc_cause);
241
242 if (UseAdaptiveSizePolicy) {
243
244 if (PrintAdaptiveSizePolicy) {
245 gclog_or_tty->print("AdaptiveSizeStart: ");
246 gclog_or_tty->stamp();
247 gclog_or_tty->print_cr(" collection: %d ",
248 heap->total_collections());
249 if (Verbose) {
250 gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d"
251 " perm_gen_capacity: %d ",
252 old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes(),
253 perm_gen->capacity_in_bytes());
254 }
255 }
256
257 // Don't check if the size_policy is ready here. Let
258 // the size_policy check that internally.
259 if (UseAdaptiveGenerationSizePolicyAtMajorCollection &&
260 ((gc_cause != GCCause::_java_lang_system_gc) ||
261 UseAdaptiveSizePolicyWithSystemGC)) {
262 // Calculate optimal free space amounts
|
222 modBS->clear(MemRegion(perm_mr.start(), old_mr.end()));
223 } else {
224 modBS->invalidate(MemRegion(perm_mr.start(), old_mr.end()));
225 }
226 }
227
228 BiasedLocking::restore_marks();
229 Threads::gc_epilogue();
230 CodeCache::gc_epilogue();
231
232 COMPILER2_PRESENT(DerivedPointerTable::update_pointers());
233
234 ref_processor()->enqueue_discovered_references(NULL);
235
236 // Update time of last GC
237 reset_millis_since_last_gc();
238
239 // Let the size policy know we're done
240 size_policy->major_collection_end(old_gen->used_in_bytes(), gc_cause);
241
242 bool free_ratio_in_effect = false;
243 if ((UseFreeRatioForParallelGC ||
244 (UseFreeRatioOnlyInSystemGCForParallelGC &&
245 gc_cause == GCCause::_java_lang_system_gc))) {
246 ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
247 free_ratio_in_effect = heap->try_to_shrink_by_free_ratio(true);
248 }
249
250 if (!free_ratio_in_effect && UseAdaptiveSizePolicy) {
251
252 if (PrintAdaptiveSizePolicy) {
253 gclog_or_tty->print("AdaptiveSizeStart: ");
254 gclog_or_tty->stamp();
255 gclog_or_tty->print_cr(" collection: %d ",
256 heap->total_collections());
257 if (Verbose) {
258 gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d"
259 " perm_gen_capacity: %d ",
260 old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes(),
261 perm_gen->capacity_in_bytes());
262 }
263 }
264
265 // Don't check if the size_policy is ready here. Let
266 // the size_policy check that internally.
267 if (UseAdaptiveGenerationSizePolicyAtMajorCollection &&
268 ((gc_cause != GCCause::_java_lang_system_gc) ||
269 UseAdaptiveSizePolicyWithSystemGC)) {
270 // Calculate optimal free space amounts
|