dotMemory 4.0 EAP: .NET Memory Profiler Resuscitation

Do you know that JetBrains provides a .NET memory profiler? You have a good excuse for not knowing this, as the profiler hasn’t seen a single update since 2010.

That is, until today.

Today we’re excited (and by this we mean really excited) to announce the availability of dotMemory 4.0 EAP, providing a brand new .NET memory profiling experience. Download early builds of dotMemory 4.0 and try ‘em out!

dotMemory? Why not dotTrace Memory?

There’s a product currently available that is called dotTrace Memory 3.5, and also a performance profiler called dotTrace Performance, with the names being artifacts of splitting a formerly integrated profiler into separate memory and performance profilers several years ago.

The two profilers have since diverged. In addition, the word “dotTrace” is very loosely related to memory profiling. So we felt it was appropriate to rename the profilers. The new version of the memory profiler is going to be called dotMemory (as opposed to dotTrace Memory), while further versions of the performance profiler will be referred to as simply dotTrace (as opposed to dotTrace Performance). Until dotMemory 4.0 is released to market, both names (“dotMemory” and “dotTrace Memory”) can be used interchangeably.

Enough talking, what’s inside the profiler?

Inspired by many popular television series, we wanted dotMemory 4.0 to feel like a tool that can help with .NET memory crime scene investigations. It lets us collect data (using one or more snapshots), choose a number of suspects (that are potentially causing the issue) and follow clues until we find who’s guilty.

After deciding on being the good cop or the bad cop, we can use dotMemory to provide answers to questions like:

  • Why is a specific object still in memory? What causes the memory leak?
  • What is taking so much memory?
  • How does garbage collection affect the performance of my application (e.g. high memory traffic)?

Let’s have a quick look at dotMemory 4.0 EAP. Do note it’s still EAP so things may change!

Starting memory profiling

After starting dotMemory, we can choose to profile a wide variety of .NET applications. There is support for standalone .NET applications, Windows Store applications, Silverlight, web applications and much more. Note that a profiling session can also be started from within Visual Studio on the project(s) that are currently open.

Exploring memory usage

After taking one or several snapshots of the application, we get to see a number of things. We can see memory usage on the different memory heaps available in .NET.

We can see the various snapshots taken during execution, and drill down into one of them or compare different snapshots. Once we open a snapshot we get a visual representation of our application’s memory usage; then we can dive into our code based on the amount of memory a given type used, based on memory fragmentation or based on dominators, objects that keep other objects in memory. We also get some common leaks shown, such as event handlers that are not being cleaned in our code.

dotMemory lets us explore further and look at objects that are being held in memory and view their dominators, instances, heap generation information and so on. With every investigative step, the left-hand navigation bar shows us exactly what we were looking at before and allows us to navigate back and forth between steps.

Give it a try!

Download dotMemory 4.0 EAP builds and don’t forget to let us know about any issues you might experience via the dotMemory issue tracker or through the comments below.

By the way, we already have some documentation available for you, including an overview of .NET memory management:

This entry was posted in dotTrace Tips&Tricks, News and Events and tagged , , , . Bookmark the permalink.

20 Responses to dotMemory 4.0 EAP: .NET Memory Profiler Resuscitation

  1. Takuya Takeuchi says:

    Great!!! I’ve been waiting since a long time ago. Please show me road map!!
    I can not wait release day!!!

    P.S
    If you can, please add feature that show reference graph of object….

  2. Corey says:

    Good news! One feature that is much needed is an ability to attach a dump file. Would be really nice if that was added.

  3. Alex says:

    Good job! Thank you very much!

  4. Dru says:

    Jeez, Corey, so needy. ;) THIS LOOKS AWESOME!

  5. vuder says:

    Great stuff! Any support for command line interface?

  6. Alex says:

    Is it possible to use dotMemory to profile memory and finding memory leaks in unit tests?

  7. Alex says:

    Solved: just use Profiler API

  8. @Alex the Profiler is indeed the way to go

  9. @vuder We would like to learn more about what information you would like to see from the profiler.

  10. Henning Krause says:

    I agree with Corey. Importing a Memory dump file is crucial.

    Memory dumps can be easily created on production machines using the Task Manager These days. Running Special Tools on the Server is not always possible.

    Other Memory profiler (scitech Memory Profile Comes to mind) do Support this.

  11. Matt says:

    As long as the out of memory bug when loading a large snapshot errors have been fixed. That was the most annoyingly ironic bug ever and made the old product almost unusable for us.

  12. Vladimir Almaev says:

    We bought dotTrace Memory 3.5 today. Would it be possible to get a free update?

  13. Daria.Dovzhikova says:

    @Vladimir,

    We will announce prices and upgrade options and conditions a bit later. Please stay tuned.

  14. Andrew says:

    Just in time. I was |– this close –| to buying a well known alternate men profiler as my dotTrace Memory 3.5 just doesn’t work any more in windows 8. Very keen to try out the new version

  15. Bhavesh Sharma says:

    very exciting indeed, I am glad this project has gotten some love after all.

  16. Esben says:

    Is there any chance that it will be able to profile applications running in mono?

  17. Hi Esben,
    Mono support isn’t currently in scope for the profilers. Do feel free to add a feature request over at http://youtrack.jetbrains.com/issues/DMRY

    Best regards,
    Maarten

  18. Korzh says:

    It’s great to hear that new version of .NET profiler has been released.
    One question. I see WebDev application type. Is it suitable both for ASP.NET MVC and old-style WebForms projects?

  19. Grady Werner says:

    Beautiful job, guys. This one blows your competition away, providing us with near instant answers on allocation traffic and other hard-to-locate issues.

    Well done.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>