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.
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.
dotMemory 2019.2 stops supporting remote profiling. To offer you an adequate replacement, we significantly improved the dotMemory console profiler:
--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.
In this release, we add the long-awaited support for .NET Core 3.0.
Now, the 'navigate to type declaration' action is able to navigate you not only to Visual Studio but to JetBrains Rider as well.
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:
MemoryProfiler.GetSnapshot()
.
The profiling controller gets a new condition for taking a snapshot: Get a snapshot if total memory usage exceeds X MB.
Click on the graph to get exact memory data at a specific time point.
Now, the default way to profile a web app hosted on IIS Express is to provide
dotMemory a applicationhost.config
file.
dotMemory 2018.3, along with other products of the ReSharper Ultimate family, can now be installed into Visual Studio 2019 Preview 1.
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.
The timeline graph gets improvements:
To learn more, see How does my app allocate to LOH? Find out with dotMemory 2018.2!
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.
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[]
.
dotMemory Unit now fully supports .NET Core unit tests. Please note that support is currently only available on Windows.
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.
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.
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.
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.
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.
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.
dotMemory Unit versions 2.2 and 2.3 bring an array of improvements:
DotMemoryUnitController
methods
TestStart()
and TestFailed()
.
AssertTraffic
attributes before the test
and
filter traffic by any set of conditions.
GetNewObjects
, GetSurvivedObjects
, and
GetDeadObjects
methods receive overloads that accept query as a parameter. This helps avoid
an additional GetObjects
call and simplify assertions.
Like
and NotLike
queries on types, interfaces, and namespaces.
DotMemoryUnit
attribute. The constants are written in angle
brackets: <User>
, <LocalAppData>
,
<CommonAppData>
and stand for %USERPROFILE%
, %APPDATA%
,
and %LOCALAPPDATA%
directories, respectively.
Type.Is
, Interface.Is
and Namespace.Like
.