Shortest root paths

Under the Shortest root paths tab page, information about the shortest root paths for all live instances of the type is presented. The shortest root paths page is not available for unmanaged resources.

The root paths presented here combine the shortest root path of each instance by only looking at the types that are part of the root path, not the actual instances.

Example:

Assume that two instances of the type ItemClass (#123 and #141) exist and that they have the following shortest root paths (where ContainerClass.allContainers is a static field).

ItemClass (#123)                  ItemClass (#141)

ContainerClass (#456)           ContainerClass (#560)

ArrayList (#193)                    ArrayList (#193)

ContainerClass.allContainers            ContainerClass.allContainers

Since only managed type information is used, these two root paths can be combined into one:

ItemClass

ContainerClass

ArrayList

ContainerClass.allContainers

This combined root path will have two live instances when presented under shortest root paths.

For more information about root paths, see Root path.

Sort root paths by

The Sort root paths by field is used to define the order of the root paths. Below is a list of all the possible options; however, the available options depend on the selected field set and whether the type is a disposable class.

The options are:

      Live instances
Shows the root paths with the most live instances first.

      New live instances
Shows the root paths with the most new live instances first.

      Live bytes
Shows the root paths with the most live bytes first.

      New live bytes
Shows the root paths with the most new live bytes first.

      Disposed instances
Shows the root paths with the most disposed instances first.

      Memory leak instances
Shows the root paths with the most memory leak instances first.

Hide root paths with zero sort value

If this checkbox is checked, then all root paths for which the sort value is zero will be hidden.

Truncate root paths

It is possible to truncate the root paths at a specific depth. This provides the possibility of combining combine the instance information from several root paths into a single root path. If root paths are truncated, the Depth field specifies the maximum depth of the root path. The following ways of truncating the root paths are available:

      At  root
A root path will be truncated when the depth counted from the instance has reached the maximum value. The truncated root path will not contain the actual root, since it will end with a [Truncated] entry.

      In the middle
A root path will be truncated in the middle when the depth counted from both the instance and the root has reached the maximum value. The truncated root path will contain both the actual root and the entry closest to the instance. A [Truncated] entry will be added in the middle.

      At instance
A root path will be truncated when the depth counted from the root has reached the maximum value. The truncated root path will not contain the entries closest to the instance, since it will start with a [Truncated] entry.

Example:

Consider the following instance root paths.

ItemClass (#123)                     ItemClass (#141)

ContainerClass (#456)              ContainerClass (#560)

AnotherClass (#129)                AnotherClass (#443)

ArrayList (#193)                       ContainerClass (#543)

ContainerClass.allContainers            ArrayList (#193)

                                                ContainerClass.allContainers

If the root paths are truncated at a depth of two, then both root paths can be combined into one (regardless of how the roots are truncated). Below is an example of how the roots are combined depending on the truncation.

At instance:                             [Truncated]
ArrayList
ContainerClass.allContainers

In the middle:                         ItemClass
[Truncated]
ContainerClass.allContainers

At root:                                    ItemClass
ContainerClass
[Truncated]

On the other hand, if the root path depth is set to three, the root paths cannot be combined if At instance is selected:

At instance (1):                      [Truncated]
AnotherClass
ArrayList
ContainerClass.allContainers

At instance (2):                      [Truncated]
ContainerClass
ArrayList
ContainerClass.allContainers

Only include identified roots

The Only include identified roots checkbox can be used to include only root paths that end in an identified root.

Root path

The Root path group box is used to present a single root path. The text box to the right of the label can be used to select which root path to show, or it can be selected using the up-down control.

Below the root path, an info panel is used to present information about the instances referenced by the root path. The fields presented include:

      Live instances

      New live instances

      Live bytes

      New live bytes

      Disposed instances

      Memory leak instances

Each field corresponds to one of the columns presented under the Types/Resources page, except New live bytes. New live bytes is the number of bytes used by new live instances, and it is presented only for call stacks and root paths.

The actual fields included in the info panel and the way they are presented depend on the selected field set and whether the selected class is a disposable class.

Select instances

When the Select instances button is clicked, entries in the Instance list to the left will be selected if the shortest root path of the instance is part of the combined root path.

Show call stacks for path

This button can be used to bring up a dialog box, which shows the allocation call stacks for the live instances for which the shortest root path is part of the combined root path. The information presented in the dialog box is the same as the information presented under the Allocation stacks page, except that only information about the relevant live instances is presented, not the allocations (e.g., Allocs/sec).

 

 

.NET Memory Profiler User Manual

© Copyright 2002-2008. SciTech Software AB.

For information about .NET Memory Profiler, see the product site at http://memprofiler.com

.NET Memory Profiler is developed by SciTech Software AB