714
715 // Track memory usage and detect low memory
716 MemoryService::track_memory_usage();
717 heap->update_counters();
718 }
719
720 if (VerifyAfterGC && heap->total_collections() >= VerifyGCStartAt) {
721 HandleMark hm; // Discard invalid handles created during verification
722 Universe::verify("After GC");
723 }
724
725 heap->print_heap_after_gc();
726 heap->trace_heap_after_gc(&_gc_tracer);
727
728 scavenge_exit.update();
729
730 log_debug(gc, task, time)("VM-Thread " JLONG_FORMAT " " JLONG_FORMAT " " JLONG_FORMAT,
731 scavenge_entry.ticks(), scavenge_midpoint.ticks(),
732 scavenge_exit.ticks());
733
734 #ifdef TRACESPINNING
735 TaskTerminator::print_termination_counts();
736 #endif
737
738 AdaptiveSizePolicyOutput::print(size_policy, heap->total_collections());
739
740 _gc_timer.register_gc_end();
741
742 _gc_tracer.report_gc_end(_gc_timer.gc_end(), _gc_timer.time_partitions());
743
744 return !promotion_failure_occurred;
745 }
746
747 // This method iterates over all objects in the young generation,
748 // removing all forwarding references. It then restores any preserved marks.
749 void PSScavenge::clean_up_failed_promotion() {
750 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
751 PSYoungGen* young_gen = heap->young_gen();
752
753 RemoveForwardedPointerClosure remove_fwd_ptr_closure;
754 young_gen->object_iterate(&remove_fwd_ptr_closure);
755
756 PSPromotionManager::restore_preserved_marks();
757
|
714
715 // Track memory usage and detect low memory
716 MemoryService::track_memory_usage();
717 heap->update_counters();
718 }
719
720 if (VerifyAfterGC && heap->total_collections() >= VerifyGCStartAt) {
721 HandleMark hm; // Discard invalid handles created during verification
722 Universe::verify("After GC");
723 }
724
725 heap->print_heap_after_gc();
726 heap->trace_heap_after_gc(&_gc_tracer);
727
728 scavenge_exit.update();
729
730 log_debug(gc, task, time)("VM-Thread " JLONG_FORMAT " " JLONG_FORMAT " " JLONG_FORMAT,
731 scavenge_entry.ticks(), scavenge_midpoint.ticks(),
732 scavenge_exit.ticks());
733
734 AdaptiveSizePolicyOutput::print(size_policy, heap->total_collections());
735
736 _gc_timer.register_gc_end();
737
738 _gc_tracer.report_gc_end(_gc_timer.gc_end(), _gc_timer.time_partitions());
739
740 return !promotion_failure_occurred;
741 }
742
743 // This method iterates over all objects in the young generation,
744 // removing all forwarding references. It then restores any preserved marks.
745 void PSScavenge::clean_up_failed_promotion() {
746 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
747 PSYoungGen* young_gen = heap->young_gen();
748
749 RemoveForwardedPointerClosure remove_fwd_ptr_closure;
750 young_gen->object_iterate(&remove_fwd_ptr_closure);
751
752 PSPromotionManager::restore_preserved_marks();
753
|