Package org.github.jamm
Class MemoryMeter
- java.lang.Object
-
- org.github.jamm.MemoryMeter
-
public class MemoryMeter extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classMemoryMeter.Guess
-
Constructor Summary
Constructors Constructor Description MemoryMeter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidagentmain(java.lang.String options, java.lang.instrument.Instrumentation inst)longcountChildren(java.lang.Object object)MemoryMeterenableDebug()Makes thisMemoryMeterprints the classes tree toSystem.outwhen measuringMemoryMeterenableDebug(int depth)Makes thisMemoryMeterprints the classes tree toSystem.outup to the specified depth when measuringstatic booleanhasInstrumentation()MemoryMeterignoreKnownSingletons()return a MemoryMeter that ignores space occupied by known singletons such as Class objects and EnumsMemoryMeterignoreNonStrongReferences()return a MemoryMeter that ignores space occupied by known singletons such as Class objects and EnumsMemoryMeterignoreOuterClassReference()longmeasure(java.lang.Object object)longmeasureDeep(java.lang.Object object)MemoryMeteromitSharedBufferOverhead()static voidpremain(java.lang.String options, java.lang.instrument.Instrumentation inst)MemoryMeterwithGuessing(MemoryMeter.Guess guess)MemoryMeterwithTrackerProvider(java.util.concurrent.Callable<java.util.Set<java.lang.Object>> trackerProvider)
-
-
-
Method Detail
-
premain
public static void premain(java.lang.String options, java.lang.instrument.Instrumentation inst)
-
agentmain
public static void agentmain(java.lang.String options, java.lang.instrument.Instrumentation inst)
-
hasInstrumentation
public static boolean hasInstrumentation()
-
withTrackerProvider
public MemoryMeter withTrackerProvider(java.util.concurrent.Callable<java.util.Set<java.lang.Object>> trackerProvider)
- Parameters:
trackerProvider-- Returns:
- a MemoryMeter with the given provider
-
omitSharedBufferOverhead
public MemoryMeter omitSharedBufferOverhead()
- Returns:
- a MemoryMeter that only counts the bytes remaining in a ByteBuffer in measureDeep, rather than the full size of the backing array. TODO: handle other types of Buffers
-
withGuessing
public MemoryMeter withGuessing(MemoryMeter.Guess guess)
- Returns:
- a MemoryMeter that permits guessing the size of objects if instrumentation isn't enabled
-
ignoreOuterClassReference
public MemoryMeter ignoreOuterClassReference()
- Returns:
- a MemoryMeter that ignores the size of an outer class reference
-
ignoreKnownSingletons
public MemoryMeter ignoreKnownSingletons()
return a MemoryMeter that ignores space occupied by known singletons such as Class objects and Enums
-
ignoreNonStrongReferences
public MemoryMeter ignoreNonStrongReferences()
return a MemoryMeter that ignores space occupied by known singletons such as Class objects and Enums
-
enableDebug
public MemoryMeter enableDebug()
Makes thisMemoryMeterprints the classes tree toSystem.outwhen measuring
-
enableDebug
public MemoryMeter enableDebug(int depth)
Makes thisMemoryMeterprints the classes tree toSystem.outup to the specified depth when measuring- Parameters:
depth- the maximum depth for which the class tree must be printed
-
measure
public long measure(java.lang.Object object)
- Returns:
- the shallow memory usage of @param object
- Throws:
java.lang.NullPointerException- if object is null
-
measureDeep
public long measureDeep(java.lang.Object object)
- Returns:
- the memory usage of @param object including referenced objects
- Throws:
java.lang.NullPointerException- if object is null
-
countChildren
public long countChildren(java.lang.Object object)
- Returns:
- the number of child objects referenced by @param object
- Throws:
java.lang.NullPointerException- if object is null
-
-