< prev index next >

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

Print this page
rev 12638 : imported patch heuristics.patch

*** 2168,2172 **** --- 2168,2197 ---- GCTimer* ShenandoahHeap::gc_timer() const { return _gc_timer; } + + class ShenandoahCountGarbageClosure : public ShenandoahHeapRegionClosure { + private: + size_t _garbage; + public: + ShenandoahCountGarbageClosure() : _garbage(0) { + } + + bool doHeapRegion(ShenandoahHeapRegion* r) { + if (! r->is_humongous() && ! r->is_pinned() && ! r->in_collection_set()) { + _garbage += r->garbage(); + } + return false; + } + + size_t garbage() { + return _garbage; + } + }; + + size_t ShenandoahHeap::garbage() { + ShenandoahCountGarbageClosure cl; + heap_region_iterate(&cl); + return cl.garbage(); + }
< prev index next >