Heap Walker Reference View - Cumulated Incoming References


  The cumulated incoming references show the list of all reference types through which the instances of classes and arrays in the current object set are held. This view has two display modes that determine how the "Object count" and the "Size" column have to be interpreted:
  • Show counts and sizes of reference holders
    The "Object count" and the "Size" columns refer to the objects that reference any objects in the current object set through a certain reference type.

    In this mode, the cumulated incoming reference view shows object counts, sizes and percentages that refer to the top level entry. This makes it easy to analyze what percentage of the current object set is held through a particular chain of references.

  • Show counts and sizes of referenced objects
    The "Object count" and the "Size" columns refer to the objects in the current object set that are referenced through a certain reference type.

    In this mode, each level is treated like a new independent object set.

There are three columns shown in the table, which can be sorted:
  • Reference type
    Shows the type of the incoming reference which is one of
    • field
      some of the objects or arrays in the current object set are held in the indicated field of an instance of the indicated class.
    • static field
      some of the objects or arrays in the current object set are held in the indicated static field of the indicated class.
    • constant
      some of the objects or arrays in the current object set are held in the constant pool of the indicated class. These references mostly stem from constants declared as private static final.
    • object array content
      some of the objects in the current object set are held in an array of instances of classes. The arrays are of types or supertypes of the held objects. A further distinction is not possible due to the nature of Java bytecode.
    • JNI global/local reference
      some of the objects or arrays in the current object set are held through the Java Native Interface. Generally global references are persistent across a number of native calls which local references are only valid for the duration of one native call. These references are of interest to JNI programmers only. If you do not use any extra native libraries and encounter these reference types nonetheless, they can be attributed to the internal state of the JVM. In that case, there won't be any accessible objects behind these references and the Size column will show a zero value.
    • java stack
      some of the objects in the current object set are held in a stack frame of a thread. Thread and method information are shown if available.
    • sticky class, thread block, unknown type
      internal references in the JVM.

    Note that for static fields, constants, java stack references and the internal references in the JVM the origin of the reference do not belong to accessible objects. The Size column shows a zero value and a filter selection is not possible for these incoming reference types.

  • Object count
    Depending on the display mode, shows
    • Show counts and sizes of reference holders
      How many objects are holding on to any object in the current object set through this reference type and along the selected chain of references.
    • Show counts and sizes of referenced objects
      How many objects in the current object set are referenced through this reference type.
    The reference count is displayed graphically as well.
  • Size
    Depending on the display mode, shows
    • Show counts and sizes of reference holders
      The total size of all objects that are holding on to any object in the current object set through this reference type.
    • Show counts and sizes of referenced objects
      The total size of all objects in the current object set that are referenced through this reference type.

    Note that this is the shallow size which does not include the size of referenced arrays and instances but only the size of the corresponding pointers.

No specific view settings apply to the cumulated incoming references.

  The cumulated reference view is a tree table, you can open single references and view cumulated reference chains. Multiple selection is only possible on the same level in the tree.

The lengths of the bars in the object count column are adjusted for the sibling nodes in the tree (not the top level) and the colors of the bars alternate between dark and light red for descending tree levels.

  To add a selection step from this view you can
  • select one or multiple references from the table and click the [Use ...] button above the table and choose Reference Holders in the popup menu. A new object set will be created that contains all objects that hold any object in the current object set by way of the selected reference types.
  • select one or multiple references from the table and click the [Use ...] button above the table and choose Referenced Objects in the popup menu. A new object set will be created that contains all objects in the current set that are held by a reference of one of the the selected types.
  • double click on a reference. Depending on the display mode, either the reference holders or the referenced objects are selected as the new object set.
All reference types in your selection that do not lead to selectable objects are removed for the selection step. If no selectable objects are contained in your selection, the corresponding action will be disabled.

A new object set will be created that contains all instances of classes and arrays that reference objects in the current object set via the selected references. After your selection, the view helper dialog will assist you in choosing the appropriate view for the new object set.