< prev index next >
src/share/vm/gc/shenandoah/shenandoahHeap.cpp
Print this page
rev 12638 : imported patch heuristics.patch
@@ -2168,5 +2168,30 @@
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 >