.NET Memory Profiler Features
On this page you will find a summary of the things you can do with .NET Memory Profiler.
NOTE! .NET Memory Profiler is available in two editions: Standard and Professional.
All features are not available in the Standard edition. For information about the
features that are included in the different editions, see the
profiler editions page.
Updated! Profile Standard Processes
Using a wizard you can easily start profiling the following types of processes:
- Standalone application (e.g. a Windows Forms application)
- ASP.NET application (using IIS or WebDev.WebServer)
- New! WPF Browser application
- Window Service
Updated! Profile Production Code
A wizard is also provided for connecting the profiler to already running processes,
or to import memory dump files. This is especially useful when profiling problems
in a production application.
Collecting snapshots allows detailed information about the garbage collected heap
to be presented. If unmanaged resource tracking is enabled then detailed information
about unmanaged resources is also presented. The views of the heap snapshot are
presented on the Heap Snapshot Views page.
Compare Collected Snapshots
Comparing snapshots allows information about the change in the heap data to be presented.
This information can for instance be used to find memory leaks by locating instances
that should have been collected. If unmanaged resource tracking is enabled then
change information about unmanaged resource instances is also presented.
The presentation of the change information is integrated into the
Heap Snapshot views.
Show All Types and Resources
Information about all types in the profiled process is presented in the
Types/Resources view, which is one of the Heap Snapshot views.
It contains a grid which presents information about all the classes in the profiled
process.
The Type/Resource Details
view is one of the Heap Snapshot views. It shows the details of a selected
type or resource, which include:
-
All information available for a type or resource is presented using info panels.
This information includes the number of instances of the type or resource, the size
of the instances etc. For disposable types it also includes information about the
number of disposed and undisposed instances.
-
All instances of the type or resource.
-
All call stacks that have allocated an instance of the type or resource.
-
Shortest root paths for all instances of the type.
The shortest root paths are combined based on types rather than instances, which
makes it easier to analyze types with a lot of live instances.
Click here for more information..
Updated! Show Instance Details
Instance Details is one
of the Heap Snapshot views. It shows the details of a selected instance,
which include:
- Information about the instance
For a managed type instance, this information includes the size, age, "size
with children" and state such as "New", "Disposed" etc.
For an unmanaged resource instance, this information includes the identifier, size
and state.
- Allocation call stack of the instance
- Root paths for the instance
For a managed type instance the following additional information is presented:
- References from and to the instance
- Wrapped unmanaged resource instances
- Field values of the managed type instance
- The target of weak references is presented as a reference to an instance, and is
also presented as a field value.
For an unmanaged resource instance the following additional information is presented:
- Related resource instances
- Managed type instances that wraps the resource instance
- Arguments provided when creating the instance
Click here for more information.
Updated! Show Call Stacks and Methods
Call Stacks/Methods is
one of the heap snapshot views. It shows information about all call stacks
and methods in which allocations have been performed.
Native memory information (i.e., memory
that is managed by the operating system rather than the Common Language Runtime)
can be presented for a selected heap snapshot, the profiled process and any other
other process running on the computer.
The dispose tracker is used to identify instances that are not properly
disposed. It can also be used to identify memory leaks by pin-pointing
instances that have been disposed, but not garbage collected. The
information gathered by the dispose tracker is presented in the Heap snapshot views
and in the real-time view.
Real-time data about the activity on the GC heap can be collected and presented. This information
gives a good overview over how the memory is being used during the life time of
the profiled process. The real-time information includes information about global
statistics such as the total number of instances, the number of GCs performed etc.
It also includes real-time information about every type in the profiled process.
The information is presented both numerically and graphically.
If unmanaged resource tracking is enabled then information about unmanaged resource
instances is also included in both the numerical and graphical real-time view.
Define Settings using Profiler Projects
.NET Memory Profiler projects can be used to save all settings on how you want to
profile a process, making it easier to use different settings for different applications.
Track Session Files using Profiler Projects
.NET Memory Profiler projects is also used to keep track of session files related
to the project. The profiler projects explorer shows all loaded projects and their
session files and allows you to compare snapshots between different sessions. This
is particularly useful when doing automated testing and you want to check whether
the memory usage has changed between different builds of a program.
The heap utilization tracker can be used to analyze and optimize
the way the garbage collected heap is used.
New! Identify GC Handle
Usage
GC handles are used to create handles to managed instances. .NET Memory Profiler
tracks the internal GC handles that are created by
the runtime itself or by using the WeakReference and GCHandle types.
The collected GC handles information is presented as a <GCHandle> pseudo-type in the
heap snapshot views.
The .NET Memory Profiler API can be used to control the profiler from within the
profiled process, and to detect potential memory leaks using assertions. This API
is very well suited for doing automated testing of memory usage errors, for instance
by using a unit testing framework like NUnit or MSTest.
For more information see the .NET Memory Profiler API examples.
Command line arguments can be supplied to the profiler. Together with the .NET Memory
Profiler API this allows the profiler to be used in an automated testing environment,
without any user interaction.
.NET Memory Profiler can be used to profile processes running under all versions
of .NET Framework. However, .NET Framework 1.0 is no longer supported.
Profile 64-bit .NET Processes
It is also possible to start profiling, attach to and import memory dumps from 64-bit
processes.
Visual Studio.NET integration allows you to start profiling C# and Visual Basic.NET
projects from within the development environment, as well as open previously stored
session files. Support for the ASP.NET development server (WebDev.WebServer) in
Visual Studio 2005 and 2008 allows you to easily profile ASP.NET projects, without affecting
other web sites.
Updated! Define How Data is Presented
Data in the Types/Resource view can be filtered using the following criteria:
-
Show types/resources with new or removed instances
-
Show types/resources with live and/or allocated instances
-
Show types/resources with live instances
-
Show types/resources with new instances
-
Show types/resources with allocated instances
-
Show types with disposed and/or undisposed instances
Additionally, it is possible to quickly sort, filter and customize the way data
is presented in the snapshot views

Copy Data to the Clipboard
All data presented in the snapshot views can be copied to the clipboard.
Low impact profiling is a special mode designed to improve the performance
of the profiled process and give more accurate information about the native memory
of the profiled process. However, no call stack information will be collected and
some features will be disabled (such as the dispose tracker) when low impact profiling
is enabled.
Low impact profiling replaces the native memory profiling found in previous versions
of the profiler.