src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp

Print this page




 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