Shallow Size Vs Retained Size

Jan 21, 2013 The retained heap shows the sum of the shallow heap size of all objects that would be removed when this object is garbage collected. For example, if an ArrayList held 100,000 items, and each item required 16 bytes, then removing the ArrayList would free 16 x 100,000 + X, where X is the shallow size of the ArrayList. Determine footing location and depth – shallow footings are less expensive, but the variability of the soil from the geotechnical report will drive choices 4. Evaluate soil bearing capacity – the factor of safety is considered here 5. Determine footing size – these calculations are based on working loads and the allowable soil pressure 6.

  1. Shallow Size Vs Retained Size Formula
  2. Shallow Size Vs Retained Size Standard
  3. Shallow Size Vs Retained Size Measurement
  4. Shallow Size Vs Retained Size Model

YourKit Java Profiler is capable of measuring shallow and retained sizes of objects.

Sep 02, 2017 Shallow size – size of the object itself including only references to other objects, without objects which are referenced. Retained size – size of the object including references to other objects. Shallow size is the object itself, consisting of the standard object header (3 pointers) and 3 in-object properties, which are again pointers. That's 6 (compressed) pointers of 4 bytes each = 24 bytes. Additional retained size is the storage for the three properties.

Shallow size of an object is the amount of memory allocated to store the object itself, not taking into account the referenced objects. Shallow size of a regular (non-array) object depends on the number and types of its fields. Shallow size of an array depends on the array length and the type of its elements (objects, primitive types). Shallow size of a set of objects represents the sum of shallow sizes of all objects in the set.

Retained size of an object is its shallow size plus the shallow sizes of the objects that are accessible, directly or indirectly, only from this object. In other words, the retained size represents the amount of memory that will be freed by the garbage collector when this object is collected.

Shallow size vs retained size vsShallow Size Vs Retained Size

To better understand the notion of the retained size, let us look at the following examples:

Shallow Size Vs Retained Size Formula

In order to measure the retained sizes, all objects in memory are treated as nodes of a graph where its edges represent references from objects to objects. There are also special nodes - GC root objects, which will not be collected by Garbage Collector at the time of measuring (read more about GC roots).

The pictures below show the same set of objects, but with varying internal references.

Figure 2:

Let us consider obj1.
As you can see, in both pictures we have highlighted all of the objects that are directly or indirectly accessed only by obj1. If you look at Figure 1, you will see that obj3 is not highlighted, because it is also referenced by a GC root object. On Figure 2, however, it is already included into the retained set, unlike obj5, which is still referenced by GC root.

Thus, the retained size of obj1 will represent the following respective values:

Shallow Size Vs Retained Size Standard

  • For Figure 1: the sum of shallow sizes of obj1, obj2 and obj4
  • For Figure 2: the sum of shallow sizes of obj1, obj2, obj3 and obj4

Shallow Size Vs Retained Size Measurement

Looking at obj2, however, we see that its retained size in the above cases will be:

  • For Figure 1: the sum of shallow sizes of obj2 and obj4
  • For Figure 2: the sum of shallow sizes of obj2, obj3 and obj4

Shallow Size Vs Retained Size Model

In general, retained size is an integral measure, which helps to understand the structure (clustering) of memory and the dependencies between object subgraphs, as well as find potential roots of those subgraphs.