What is dotMemory?
dotMemory is a memory profiling tool that allows you to analyze memory usage of any .NET-based application. This includes standalone applications (for example, written in C# or VB.NET), ASP.NET web applications, arbitrary .NET processes, and others.
For the information about dotMemory system requirements, refer to this page.
How does it work?
dotMemory collects memory usage data of a running .NET process. The data is then presented to you in a number of views which provide different perspectives on objects in memory.
Why do I need it?
dotMemory allows you to answer a large number of questions related to the memory usage of your app:
Why is this object still in memory (what causes the memory leak)?
What takes so much memory?
How does garbage collection affect the performance of an application (for example high memory traffic)?
Are there any memory allocation/distribution patterns violated?
Nevertheless, emergency cases (when you already have memory issues) is not the only reason for memory profiling. dotMemory is a great tool for a daily base use as well. For example, run dotMemory after applying changes to the code or introducing a new algorithm. dotMemory will immediately show you how the things are going — is it getting better or worse. Making the usage of dotMemory one of your obligatory routines will help you to improve your code on-the-fly.