The Ages tab summarises all the allocations in the target program by their age, as opposed to by type.
Click a part of the image below to jump straight to the help for that area.
The view lists of all the object types in the program in generation order, with the ability to view a range of related statistics.
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.
Each tab provides a different group of generation statistics:
•Objects How many objects of this type are this age
•Object Activity 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 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 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 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.
Each row is coloured according to whether the object has:
an increasing count for the number of live objects of the size
a decreasing count
a static count
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:
the object size with the maximum value in a given column (not shown for all columns)
relative contribution of the value in each column
See also the Data Highlighting settings dialog to customise the first two colours.
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 choose the generation to sort
•Descending choose the sort direction
•Update Interval (s) automatically updates the display at your choice of interval between 0.1 and 60 seconds - or never!
•Refresh updates the display - as does the 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... display the Ages Settings dialog.
•Filter... shows the Ages Filters settings dialog to edit the filters.
The following popup menu provides options for filtering and examining data in more detail.
The following options are only active for .Net object types. They are disabled for native object types.
•Paths to Root For all live objects of this type display all the paths from the object to the most recent heap dump roots.
•Paths from Root For all live objects of this type display all the paths most recent heap dump roots to the live objects.
The following options allow you to remove data from the display using filters.
•Filter by Type 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.
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 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: