Home
Download
Buy
Support

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

Collect Snapshots

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. 

Updated! Show Type and Resource Details

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.

Updated! Show Native Memory

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.

Track Disposable Instances

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.

Show Real-time Memory Data

Real-time graph

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.

Track Heap Utilization

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.

Updated! Automate testing using the .NET Memory Profiler API

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.

Control the Profiler from the Command Line

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.

Updated! Run under .NET Framework 1.1, 2.0, 3.0, and 3.5

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

Updated! Profile from within Visual Studio.NET 2003, Visual Studio 2005, and Visual Studio 2008

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.

Reduce the Impact of the Profiler

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.

.NET Memory Profiler is developed by SciTech Software AB
© Copyright 2002-2008. SciTech Software AB. All right reserved.

If you have any comments or questions on the profiler, please write to memprofiler@scitech.se.