dotMemory 2021.1 Help

Analyze Process Dumps

Sometimes, for example in case of a production web server, it may be not possible to install dotMemory on a computer and get a regular memory snapshot. Typically, your last resort in such a case is a raw memory dump. dotMemory lets you import and analyze the dumps as regular snapshots: involving all product features like automatic inspections and retention diagrams.

dotMemory supports the following memory dumps:

  • Windows: .NET Framework 4.5 or later, .NET Core 1.0 or later, .NET 5 or later.

  • Linux: .NET Core 3.1 or later, .NET 5 or later.

  • macOS: not supported.

Getting a process memory dump

  • Windows

    You can get a memory dump with a number of tools. The two most popular ones are Task Manager (comes with the operating system) and Process Explorer.

    Important: When getting a dump of a 32-bit application with Task Manager, make sure you use a 32-bit version of the tool. You can find it in C:\Windows\SysWOW64\taskmgr.exe.

  • Linux

    dotMemory supports memory dumps created using the gcore and dotnet-dump tools. For example, to get a dump of a process with the 1234 PID:

    sudo gcore 1234

    or

    dotnet-dump collect -p 1234

Importing a process memory dump

  1. On the Home page, on the left panel, click Import Process Dump.

  2. In the opened dialog, select the desired workspace file and click Open.

    After this, the imported dump will be converted into a regular dotMemory workspace.

Unreachable objects

Before taking a memory snapshot, dotMemory forces full garbage collection. In contrast, when you get a memory dump with Task Manager or another tool, garbage collection is not performed. As a result, the memory dump will contain objects that are not reachable from GC roots. Typically, these are objects that have been already prepared for garbage collection but have not been collected. In some cases, they may be of interest for analysis. dotMemory lets you open such objects as a separate object set.

To open a set of unreachable objects

  1. Import and open a memory dump.

  2. Open the Inspections view.

  3. In the Heap Fragmentation section, click the link unreachable objects.

    Unreachable objects

Last modified: 07 April 2021