About dotMemory

A profiling solution for profiling the memory use of your .NET applications.

dotMemory lets you discover memory leaks and optimize memory usage in applications based on the .NET Framework including desktop, Web applications, and Windows services. dotMemory includes two profiling modes. You can identify instant memory status, or monitor memory allocation dynamics over time. If you are looking to optimize a certain class, you can quickly find all objects of this class in a memory snapshot. While analyzing a snapshot, you can instantly view the source code of any functions involved.

Memory profiling features in dotTrace Memory
With dotMemory, you can quickly profile the memory usage of your applications based on .NET Framework. The profiling process is not only simple but fast. A wealth of profiling data is accurately recorded and presented in the form of memory snapshots, allowing thorough analysis of memory issues.

  • Versatile memory profiling modes - Depending on your needs, you can profile memory in two different ways. To check what objects are currently loaded in memory (but shouldn't be), you can dump memory at any time during profiling. To also view the difference between two application memory states, during profiling you can mark the start and the end of a time interval, then capture a snapshot containing the difference data. A difference snapshot lets you see how much new memory was allocated and how much was released during the marked time interval. The view can be filtered to show only Live objects, only New objects, only Dead objects, only Garbage objects, or the difference between New and Dead objects. 
  • Convenient data representation - Each memory snapshot holds a wealth of data on all objects allocated in memory, from the roots to every single object allocated or deleted at any time during the profiling session. A number of views are available to you for examining and analyzing memory snapshots, including Class List, Namespace Tree, Outgoing references, Shortest root path, and Allocation Tree. You can also focus on any subsystem of your application by opening it in a separate tab.
  • Find objects by class - To help you locate the presence of particular class of objects in memory, dotTrace provides the rapid Find objects by class (Ctrl+N) search feature. The use of wildcards and CamelCase abbreviations is supported for faster search results.
  • Finalized objects - dotTrace Memory lets you see finalized objects — objects which were deleted by the finalizer. You can examine them to find that some were not properly disposed of in the code of your application, which is a potential memory leak.
  • Merging strongly-connected objects - When you are navigating though the graph of objects in memory, some dependencies are difficult to see at a glance. dotTrace Memory offers an easy way to merge (group) strongly-connected objects together, so that you can see which objects and/or groups any particular node is holding.