To open the Instances Diff view for a particular type, double click over its row in the Compare Snapshots view
or select the row and click the Instances button
The Instances Diff view shows the instances of a given type from both snapshots
and compares how these instances have changed during the time between the two snapshots.
You can observe how any particular instance is held in memory by exploring it in the Paths To GC Roots view.
This can be done by double clicking its row, by clicking the Root Paths button in the ribbon or
by choosing the Show Paths to GC Roots option from the context menu.
You can find which objects are dominated and which dominate an instance by locating it in the Largest Memory Retainers view.
To do this click the Find in Memory Retainers button in the ribbon or choose the
Navigate to Largest Memory Retainers option from the context menu.
Look out for objects that are supposed to be short-lived but have a significant age. An object of age 2 or more will only
be collected in a full garbage collection (i.e. one spanning all generations) and this may have a significant performance impact
on your application's performance.
To find leaked instances, find which types have suspiciously many instances, but shouldn't. Then, open the instance diff for those types,
see which are surviving and open and explore their Paths To GC Roots.
The following information is listed for each instance:
- Object ID - unique ID of the instance.
- Type Name - fully qualified name of its type.
- Size - memory allocated for the object.
- Retained Size - total memory allocated for all dominated objects in its
subtree in the Largest Memory Retainers view, including its own size.
- Age - how many times the garbage collector considered this instance for collection.
Every time an instance survives garbage collection in its generation, its age is incremented.
- Status - compares the state of the instance between the two snapshots
- New - the object is new, i.e. it didn't exist in the older snapshot but exists in the newer.
- Collected - the object is collected, i.e. it exists in the older snapshot but doesn't exist in the more recent snapshot.
- Surviving - a GC survivor, i.e. it exists in both snapshots.