src/hotspot/share/gc/cms/compactibleFreeListSpace.hpp
Print this page
@@ -190,10 +190,13 @@
HeapWord* _nearLargestChunk;
// Used to keep track of limit of sweep for the space
HeapWord* _sweep_limit;
+ // Stable value of used().
+ size_t _used_stable;
+
// Used to make the young collector update the mod union table
MemRegionClosure* _preconsumptionDirtyCardClosure;
// Support for compacting cms
HeapWord* cross_threshold(HeapWord* start, HeapWord* end);
@@ -410,10 +413,21 @@
// try to bump down the address and the allocator will try to bump it up.
// For now, however, we'll just use the default used_region()
// which overestimates the region by returning the entire
// committed region (this is safe, but inefficient).
+ // Returns monotonically increasing stable used space bytes for CMS.
+ // This is required for jhat and other memory monitoring tools
+ // that might otherwise see inconsistent used space values during a garbage
+ // collection, promotion or allocation into compactibleFreeListSpace.
+ // The value returned by this function might be smaller than the
+ // actual value.
+ size_t used_stable() const;
+ // Recalculate and cache the current stable used() value. Only to be called
+ // in places where we can be sure that the result is stable.
+ void recalculate_used_stable();
+
// Returns a subregion of the space containing all the objects in
// the space.
MemRegion used_region() const {
return MemRegion(bottom(),
BlockOffsetArrayUseUnallocatedBlock ?