Please enable JavaScript to view this site.

Memory Validator Help

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

 

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

 

ages-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.

 

 

Age tabs

 

 ages-tabs

 

Each tab provides a different group of generation statistics:

 

Objects instructionStep How many objects of this type are this age

 

Object Activity instructionStep How many objects of this type are this age have any object activity. If an object has not been used for a long time there is a good chance it has been leaked.

 

Stale Objects instructionStep How many objects of this type are this age are considered to be stale.

 

Stale objects may be candidates for memory leak inspection. These objects are based upon simple hueristics guided by some parameters you can set using the settings dialog. The hueristics allow you to tailor the stale object detection for your application because a good strategy for one application may not be very useful for another application (compare a word processor to a server process - they both have different characteristics in memory usage).

 

Object Activity detection and Stale Object detection is controlled by the Object Activity Settings.

 

Watching the Ages display as your application runs can give you a very good instantaneous view of which object types may be candidates for further inspection for memory leaks.

 

note Note that the Ages display is CPU intensive. If you do not need to view the Ages display you are advised to view a different display whilst collecting data to maximise the performance of Memory Validator.

 

 

The ages data columns

 

The first column is the object type.

 

All other columns represent each object age. The ordering of the ages 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.

 

 

Ages tab options

 

The following options are available:

 
ages-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 ("Type" and "Inactive").

 

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 Ages Settings dialog.

 

 

Filter settings

 

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

 

 

Ages 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 Ages instructionStep shows allocations only
 

For example, showing allocations for the following row in the Ages tab will show the callstacks for 2634 allocations of System.Collections.DictionaryEntry in the Analysis tab below:

 

ages-show-in-analysis1

 

ages-show-in-analysis2