< prev index next >

src/share/vm/gc/shenandoah/shenandoahHeap.cpp

Print this page
rev 13320 : Use peak occupancy to optimize/pessimize free_threshold in adaptive heuristics.


 872   RecycleDirtyRegionsClosure() : _heap(ShenandoahHeap::heap()) {}
 873 
 874   bool doHeapRegion(ShenandoahHeapRegion* r) {
 875 
 876     assert (! _heap->cancelled_concgc(), "no recycling after cancelled marking");
 877 
 878     if (_heap->in_collection_set(r)) {
 879       log_develop_trace(gc, region)("Recycling region " SIZE_FORMAT ":", r->region_number());
 880       _heap->decrease_used(r->used());
 881       _bytes_reclaimed += r->used();
 882       r->recycle();
 883     }
 884 
 885     return false;
 886   }
 887   size_t bytes_reclaimed() { return _bytes_reclaimed;}
 888   void clear_bytes_reclaimed() {_bytes_reclaimed = 0;}
 889 };
 890 
 891 void ShenandoahHeap::recycle_dirty_regions() {

 892   RecycleDirtyRegionsClosure cl;
 893   cl.clear_bytes_reclaimed();
 894 
 895   heap_region_iterate(&cl);
 896 
 897   _shenandoah_policy->record_bytes_reclaimed(cl.bytes_reclaimed());
 898   if (! cancelled_concgc()) {
 899     clear_cset_fast_test();
 900   }
 901 }
 902 
 903 ShenandoahFreeSet* ShenandoahHeap::free_regions() {
 904   return _free_regions;
 905 }
 906 
 907 void ShenandoahHeap::print_heap_regions(outputStream* st) const {
 908   _ordered_regions->print(st);
 909 }
 910 
 911 class PrintAllRefsOopClosure: public ExtendedOopClosure {




 872   RecycleDirtyRegionsClosure() : _heap(ShenandoahHeap::heap()) {}
 873 
 874   bool doHeapRegion(ShenandoahHeapRegion* r) {
 875 
 876     assert (! _heap->cancelled_concgc(), "no recycling after cancelled marking");
 877 
 878     if (_heap->in_collection_set(r)) {
 879       log_develop_trace(gc, region)("Recycling region " SIZE_FORMAT ":", r->region_number());
 880       _heap->decrease_used(r->used());
 881       _bytes_reclaimed += r->used();
 882       r->recycle();
 883     }
 884 
 885     return false;
 886   }
 887   size_t bytes_reclaimed() { return _bytes_reclaimed;}
 888   void clear_bytes_reclaimed() {_bytes_reclaimed = 0;}
 889 };
 890 
 891 void ShenandoahHeap::recycle_dirty_regions() {
 892   shenandoahPolicy()->record_peak_occupancy();
 893   RecycleDirtyRegionsClosure cl;
 894   cl.clear_bytes_reclaimed();
 895 
 896   heap_region_iterate(&cl);
 897 
 898   _shenandoah_policy->record_bytes_reclaimed(cl.bytes_reclaimed());
 899   if (! cancelled_concgc()) {
 900     clear_cset_fast_test();
 901   }
 902 }
 903 
 904 ShenandoahFreeSet* ShenandoahHeap::free_regions() {
 905   return _free_regions;
 906 }
 907 
 908 void ShenandoahHeap::print_heap_regions(outputStream* st) const {
 909   _ordered_regions->print(st);
 910 }
 911 
 912 class PrintAllRefsOopClosure: public ExtendedOopClosure {


< prev index next >