The dotMemory command-line tool now works on computers with Apple silicon processors. You can now use dotMemory CLT to profile .NET 6 applications (native mode) and .NET 5 applications (Rosetta 2 mode).
We completely reworked the algorithm behind the dominators tree (the object retention graph). Even if an object set contains hundreds of millions of objects, it only takes dotMemory a couple of minutes to open a specific view.
dotMemory can now get sampled data about memory allocation based on ETW events. Compared to the traditional (statistical) way of collecting allocation data, sampling is less accurate but provides a number of advantages:
Note that this feature is available only on Windows.
You can now use the Subsystems view to analyze memory allocation data. A subsystem groups all methods belonging to the same type, namespace, or assembly. The resulting view displays objects created by the subsystems and a merged call tree for each subsystem.
In this release, we have continued to improve the way you analyze memory allocation. Two new tabs have been added to the Memory Allocation view:
The search bar at the top of dotMemory views is now more flexible and easier to use:
It’s now possible to:
It’s now possible to use service messages to enable and disable the collection of memory allocation data.
A stack trace copied to the clipboard in dotMemory is now automatically opened in Rider / Visual Studio with ReSharper.
We’ve completely reworked the dotMemory Home screen – it is much easier to configure and start new profiling sessions, work with snapshots, and perform other basic operations.
Now, you can analyze dumps of .NET Core applications collected on the Linux systems
Now, dotMemory lets you analyze memory allocation on an arbitrary time interval. Just select the interval on the timeline and the Memory Allocation view will show you the objects allocated on this interval, as well as the stack trace that allocated them.
dotMemory now lets you profile .NET 5 applications on Windows, macOS, and Linux. Note that to profile applications on Linux and macOS, you should use dotMemory command-line profiler.
dotMemory uses the timeline data to provide automatic inspections right on the Timeline graph.
Currently, there are three inspections available:
.NET 5 introduced a separate heap segment for storing pinned objects - objects that cannot be moved in a heap which leads to heap fragmentation. dotMemory shows the Pinned Object Heap in the Heap Fragmentation View. Also, now dotMemory shows memory allocated to the Pinned Object Heap in real-time during profiling.
The dotMemory command-line profiler for Linux (any distribution with GLIBC_2.23 or later) lets you profile applications on ARM64 systems.
You can now open pinned objects as a separate object set.
You can now open objects that are not reachable from GC roots as a separate object set.
In this release, we were focused on bugfixes and stability improvements.
Free 30-day trial