What′s New in dotMemory

This page guides you through updates in recent dotMemory and dotMemory Unit releases. Highlights include a command-line profiling tool, support for .NET Core applications, and analyzing memory dumps.

Free trial for 5 days of actual use

Console profiler improvements 2019.2

dotMemory 2019.2 stops supporting remote profiling. To offer you an adequate replacement, we significantly improved the dotMemory console profiler:

  • The console profiler gets commands to profile all types of applications including .NET Core applications, IIS Express-hosted applications, Windows services, and others.
  • The --trigger-on-activation argument allows taking a memory snapshot right after this becomes possible. This feature can be helpful in case you want to take a baseline snapshot and use it for comparison.
Improved .NET Core 3.0 support

Improved support for .NET Core 3.0 applications 2019.2

  • dotMemory is able to attach to .NET Core 3.0 Preview 7 processes.
  • ASP.NET Core 3.0 Preview 7 is supported.
Various improvements

Various improvements and changes 2019.2

  • You can set environment variables for any application type.
  • ASP.NET Core support in Visual Studio is improved: different hosting models are correctly supported, browser settings and Enable SSL are taken into account when starting a profiling session, and more.
  • Profiling API gets the ability to detach from the profiled process.
  • Silverlight and WebDev applications are no longer supported.
.NET Core 3.0 support

Profiling of .NET Core 3.0 applications 2019.1

In this release, we add the long-awaited support for .NET Core 3.0.

Improved navigation to IDEs

Improved navigation to IDEs 2019.1

Now, the 'navigate to type declaration' action is able to navigate you not only to Visual Studio but to JetBrains Rider as well.

New profiling API

New profiling API 2019.1

As you might know, dotMemory includes the profiling API that is used to control profiling sessions right from the code of your application. In 2019.1, we have rewritten this API from scratch to make it more user-friendly:

  • We got rid of the state machine.
  • We reduced a number of methods you have to use. Thus, to get a memory snapshot, simply call MemoryProfiler.GetSnapshot().
  • The API is available as a NuGet package.
Getting snapshots by condition

Improved getting snapshots by condition 2018.3

The profiling controller gets a new condition for taking a snapshot: Get a snapshot if total memory usage exceeds X MB.

Improved timeline graph

Improved timeline 2018.3

Click on the graph to get exact memory data at a specific time point.

Improved IIS Express profiling settings

Improved IIS Express profiling settings 2018.3

Now, the default way to profile a web app hosted on IIS Express is to provide dotMemory a applicationhost.config file.

Support for Visual Studio 2019 Preview 1

Visual Studio 2019 Preview 1 support 2018.3

dotMemory 2018.3, along with other products of the ReSharper Ultimate family, can now be installed into Visual Studio 2019 Preview 1.

Profiling ReSharper run configurations

Profiling ReSharper run configurations 2018.2

dotMemory integrated in Visual Studio gets more profiling capabilities. Now, you can profile not only your startup project, but any run configuration: a startup project, an arbitrary executable, or even any static method.

Improved timeline chart

Improved timeline 2018.2

The timeline graph gets improvements:

  • The timeline is now available for all types of applications including .NET Core, ASP.NET Core, IIS-hosted web apps, and others.
  • The timeline gets a new Allocated in LOH since GC chart. The chart shows instant memory allocation to the Large Object Heap and can be very helpful in detecting excessive allocations of large objects.

To learn more, see How does my app allocate to LOH? Find out with dotMemory 2018.2!

Improved user interface

Improved user interface 2018.1

The 2018.1 release brings multiple minor user interface improvements. The most significant change is the reworked Analysis Subject panel. Now, it's much easier to navigate your analysis path.

Improved object filtering

Improved object search 2017.3

Make your search more efficient when searching for particular objects in a memory snapshot! Now, you can use special symbols to create complex patterns. For example, adding !a will exclude all arrays from the result: !a str will return String but not String[].

.NET Core Tests Support

Support for .NET Core unit tests Unit 3.0

dotMemory Unit now fully supports .NET Core unit tests. Please note that support is currently only available on Windows.

Importing memory dumps

Importing memory dumps 2017.2

You can now import raw Windows memory dumps (typically, you get them using Task Manager or Process Explorer) and analyze them using the power of dotMemory.

This feature is currently in Beta status: although it's 100% functional, we were simply unable to test it on all possible combinations of Windows and .NET Framework versions. It's still possible that on some of these combinations, dotMemory won't show you all expected data in the resulting snapshot.

Better UI 2017.2

The dotMemory user interface was slightly redesigned to make navigation through analysis subjects and views easier. An additional benefit of this effort is the increased views area.

Reworked Dominators view 2017.2

The Dominators view was reworked to make it easier to reveal key objects in your application. The tree of dominators is now combined with the dominators sunburst chart.

Attach using drag and drop

Profile running apps with drag and drop 2017.1

You can now attach the profiler to running applications using drag and drop. Simply drop a special icon onto the application window that you want to profile.

Command-line profiler

Command-line profiler 2017.1

dotMemory 2017.1 includes the dotMemory.exe tool that allows you to profile from the command line. The tool is extremely helpful when you need to automate the process of gathering memory snapshots, e.g. if you want to make profiling a part of your continuous integration builds.

Finalizable objects inspection 2016.3

dotMemory 2016.3 checks your application on finalized objects and objects queued for finalization. A new inspection shows such objects on the snapshot overview page.

Improvements in dotMemory Unit 2.2

Improvements in dotMemory Unit Unit 2.2, 2.3

dotMemory Unit versions 2.2 and 2.3 bring an array of improvements:

  • Refined APIs to work with unit testing frameworks that are not supported out-of-the-box, such as new arguments accepted in DotMemoryUnitController methods TestStart() and TestFailed().
  • You can now place any number of AssertTraffic attributes before the test and filter traffic by any set of conditions.
  • Object selection queries now support open generic types, which is useful if you want to get all substitutions of your generic type.
  • GetNewObjects, GetSurvivedObjects, and GetDeadObjects methods receive overloads that accept query as a parameter. This helps avoid an additional GetObjects call and simplify assertions.
  • You can select objects by wildcards using the Like and NotLike queries on types, interfaces, and namespaces.
  • You can use three constants when specifying a directory for saving workspaces in the DotMemoryUnit attribute. The constants are written in angle brackets: <User>, <LocalAppData>, <CommonAppData> and stand for %USERPROFILE%, %APPDATA%, and %LOCALAPPDATA% directories, respectively.
  • Improved performance of key queries: Type.Is, Interface.Is and Namespace.Like.
  • Tests that execute queries from child processes are now handled correctly.
Download dotMemory
Free trial for 5 days of actual use