Class MemoryMeter


  • public class MemoryMeter
    extends java.lang.Object
    • Constructor Detail

      • MemoryMeter

        public MemoryMeter()
    • 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 this MemoryMeter prints the classes tree to System.out when measuring
      • enableDebug

        public MemoryMeter enableDebug​(int depth)
        Makes this MemoryMeter prints the classes tree to System.out up 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