Please enable JavaScript to view this site.

Memory Validator Help

The Generations tab summarises all the allocations in the target program by their generation, as opposed to by type.

 

interactiveClick a part of the image below to jump straight to the help for that area.

 

generations-tab-with-menu

 

 

The view lists of all the object types in the program in generation order, with the ability to view a range of related statistics.

 

note The features here are roughly a subset of those on the Types tab. If you're going through this help and already read the about the Types tab, you could skip this topic and go on to the Timeline tab if you wish.

 

 

Generation tabs

 

 generations-tabs

 

Each tab provides a different group of generation statistics:

 

Num Objects instructionStep How many objects of this type in this generation

 

Min Objects instructionStep Minimum number of objects of this type in this generation

 

Max Objects instructionStep Maximum number of objects of this type in this generation

 

Allocated instructionStep Number of objects of this type allocated in this generation

 

Collected instructionStep Number of objects of this type collected in this generation

 

If you only see 0 values this may indicate leaking objects. For example:

 

generations-collection-value-zero

 

Delta instructionStep Difference between number of objects of this type allocated and collected

 

If you only see positive deltas this may indicate leaking objects. For example:

 

generations-delta-positive

 

Object Churn instructionStep Object churn for this object type for this generation

 

Percentage of objects collected in the generation divided by the number of objects allocated in the generation. This number can exceed 100%.

 

High object churn - objects are being rapidly created and garbage collected

 

Low object churn - objects are rarely being created and rarely garbage collected. Low churn may indicate leaking objects.

 

Max Churn instructionStep Maximum churn for this object type for this generation

 

Percentage of objects collected in the generation divided by the maximum number of objects in the generation.

 

Finalized instructionStep How many objects of this type have been finalized.

 

For many objects this will always be zero.

 

The above values need to assessed together to determine if a particular object type may be leaking. A collected count of zero, on it's own is meaningless. But if combined with a history of allocations and only positive deltas, that's a pretty strong hint that this object type may be leaking and that you need to examine it further.

 

 

The generations data columns

 

The first column is the object type.

 

All other columns represent each generation of data. The ordering of the generation columns is controlled by the Display Settings.

 

The header columns display a total for the column underneath the column name.

 

The value in each column is determined by which tab of data is being displayed.

 

 

Colours used in the display

 

Each row is coloured according to whether the object has:

 

objects-colours-red  an increasing count for the number of live objects of the size

objects-colours-blue  a decreasing count

objects-colours-gray  a static count

objects-colours-white  a zero count - i.e. where all allocated objects of the size have been freed

 

The importance of each value within the column is highlighted with a percentage bar:

 

objects-colours-dkgreen  the object size with the maximum value in a given column (not shown for all columns)

objects-colours-green  relative contribution of the value in each column

 

seeAlsoSee also the Data Highlighting settings dialog to customise the first two colours.

 

 

Generations tab options

 

The following options are available:

 
generations-common-options

 

 

Sorting columns

 

Sorted columns are highlighted yellow. Just click on the column header to change the sorting column or it's sort direction order.

 
As well as the column headers we also provide explicit sorting controls to provide an extra option that isn't available from the column headers ("Current generation").

 

Sort instructionStep choose the generation to sort

 

Descending instructionStep choose the sort direction

 

 

Updating the display

 

Update Interval (s) instructionStep automatically updates the display at your choice of interval between 0.1 and 60 seconds - or never!

 

Refresh instructionStep updates the display - as does the refresh button on the Tools menu and toolbar

 

With an update interval set to Never, you'll need to use this Refresh button to update the display.

 

Display... instructionStep display the Generation Settings dialog.

 

 

Filter settings

 

Filter... instructionStep shows the Generations Filters settings dialog to edit the filters.

 

 

Generations view popup menuright_mouse_button

 

The following popup menu provides options for filtering and examining data in more detail.

 

generations-menu

 

 

right_mouse_buttonMenu option: Paths to Root, Paths from Root

 

The following options are only active for .Net object types. They are disabled for native object types.

 

Paths to Root instructionStep For all live objects of this type display all the paths from the object to the most recent heap dump roots.

 

Paths from Root instructionStep For all live objects of this type display all the paths most recent heap dump roots to the live objects.

 

 

right_mouse_buttonMenu option: Filter by Function

 

The following options allow you to remove data from the display using filters.

 

Filter by Type instructionStep creates a filter with the selected object type.
 

By default filters prevent data from being displayed. You can change this using the Generation Filters.

 

Filters can be edited using the Filter... button to display the Generation Filters.

 

 

right_mouse_buttonMenu option: Showing locations - drilling down into the data

 

The following option opens the Analysis Tab, adding a callstack for every allocation or deallocation of the selected object size.

 

This enables a deeper inspection of where and how objects of this size are allocated or freed.

 

Show Allocation Generations instructionStep shows allocations only
 

For example, showing allocations for the following row in the Generations tab will show the callstacks for 4748 allocations of System.String in the Analysis tab below:

 

generations-show-in-analysis1

 

generations-show-in-analysis2