Please see the key concepts of the heap walker for an explanation of retained size.
Not all dominated objects are directly referenced by their dominators. For example, consider the references in the following figure:
Object A dominates objects B1 and B2, it does not have a direct reference to object C. Both B1 and B2 reference C. Neither B1 nor B2 dominates C, but A does. In this case, B1, B2 and C are listed as direct children of A in the dominator tree, and C will not be listed a child of B1 and B2. For B1 and B2, the field names in A by which they are held are displayed. For C, [transitive reference] is displayed on the reference node.
At the left side of each reference node in this tree, a size bar shows how many percent of the retained size of the top-level object heap are still retained by the target object. The numbers will decrease as you drill down further into the tree. In the view settings, you can change the percentage base to the total heap size.
The dominator tree has a built-in cutoff that eliminates all objects that have a retained size that
is lower than 0.5% of the retained size of the parent object. This is to avoid excessively
long lists of small dominated objects
that distract from the important objects. If such a cutoff has been performed, a
cutoff child node will be shown that notifies you about
the number of objects that are not shown on this level, their total retained size
and the maximum retained size
of the single objects.
Each rectangle represents a dominated object. The area of the rectangle is proportional to its retained size. In contrast to the tree, the tree map gives you a flattened perspective of all leafs in the dominator tree. If you're mostly interested in big arrays, you can use the tree map in order to find them quickly without having to dig into the branches of the tree. Also, the tree map gives you an overall impression of the relative importance of dominated objects and the object size distribution in the heap.
At the bottom right of the tree map you can see the total percentage of the entire heap that is represented by the tree map. If you have not zoomed in, the remaining part of the heap is dominated by objects that have not made it into the list of biggest objects due to the internal threshold for retained sizes.
toString()
on all expanded
references in the view and shows the results. If you open more references or add more
references with the
hyperlink at the bottom of the table, those objects will not have their toString()
values
displayed. You will have to click the button again in order to show the missing values.
The reason why this operation is not performed automatically is that calculating toString() values is an expensive operation that invokes Java code in the profiled JVM and may even have unwanted side effects in buggy implementations.
java.lang.Class
objects of the selected instances.
After your selection, the view helper dialog will assist you in choosing the appropriate view for the new object set.