Class GraphLayout

java.lang.Object
org.openjdk.jol.info.GraphLayout

public class GraphLayout extends Object
Holds the object graph layout info.
  • Field Details

    • gprs

      private final List<GraphPathRecord> gprs
    • description

      private final String description
    • processedHisto

      private volatile boolean processedHisto
    • classes

      private Set<Class<?>> classes
    • classSizes

      private Multiset<Class<?>> classSizes
    • classCounts

      private Multiset<Class<?>> classCounts
    • processedAddresses

      private volatile boolean processedAddresses
    • addresses

      private Map<Long,GraphPathRecord> addresses
    • minAddress

      private long minAddress
    • maxAddress

      private long maxAddress
    • addressTries

      private int addressTries
    • addressStable

      private boolean addressStable
    • processedTotals

      private volatile boolean processedTotals
    • totalCount

      private long totalCount
    • totalSize

      private long totalSize
  • Constructor Details

    • GraphLayout

      public GraphLayout(Object... roots)
  • Method Details

    • parseInstance

      public static GraphLayout parseInstance(Object... roots)
      Parse the object graph starting from the given instance.
      Parameters:
      roots - root instances to start from
      Returns:
      object graph
    • addRecord

      void addRecord(GraphPathRecord gpr)
    • ensureProcessedAddresses

      private void ensureProcessedAddresses()
    • subtract

      public GraphLayout subtract(GraphLayout another)
      Subtract another layout data from the current one. This method does not change the current data object, but produces another one. Note that the object identity is derived from object addresses: if some objects move, they will be treated as new/absent. You may want to quiesce the heap (possibly doing several back-to-back GCs) before taking the snapshots.
      Parameters:
      another - data object
      Returns:
      new data object, that contains the difference.
    • add

      public GraphLayout add(GraphLayout another)
      Add another layout data to the current one. This method does not change the current data object, but produces another one. Note that the object identity is derived from object addresses: if some objects move, they will be treated as new. You may want to quiesce the heap (possibly doing several back-to-back GCs) before taking the snapshots.
      Parameters:
      another - data object
      Returns:
      new data object, that contains the union.
    • ensureProcessedHisto

      private void ensureProcessedHisto()
    • getClassSizes

      public Multiset<Class<?>> getClassSizes()
      Answer the class sizes.
      Returns:
      class sizes multiset
    • getClassCounts

      public Multiset<Class<?>> getClassCounts()
      Answer the class counts
      Returns:
      class counts multiset
    • getClasses

      public Set<Class<?>> getClasses()
      Answer the set of observed classes
      Returns:
      observed classes set
    • ensureProcessedTotals

      private void ensureProcessedTotals()
    • totalCount

      public long totalCount()
      Answer the total instance count
      Returns:
      total instance count
    • totalSize

      public long totalSize()
      Answer the total instance footprint
      Returns:
      total instance footprint, bytes
    • startAddress

      public long startAddress()
      Answer the starting address of observed memory chunk
      Returns:
      starting address
    • endAddress

      public long endAddress()
      Answer the ending address of observed memory chunk
      Returns:
      ending address
    • addresses

      public SortedSet<Long> addresses()
      Answer the set of addresses for the discovered objects
      Returns:
      sorted set of addresses
      See Also:
    • record

      public GraphPathRecord record(long address)
      Get the object descriptor for the given address
      Parameters:
      address - address
      Returns:
      object descriptor
    • toFootprint

      public String toFootprint()
      Get the stringly representation of footprint table
      Returns:
      footprint table
    • toPrintable

      public String toPrintable()
      Get the stringly representation of object graph
      Returns:
      linearized text form of object graph
    • toImage

      public void toImage(String fileName) throws IOException
      Put the graphical representation of object graph into the file.
      Parameters:
      fileName - filename
      Throws:
      IOException - when I/O fails