.NET Tools

dotMemory Standalone 2021.3 – 32-bit Version Deprecation

Starting with the next dotMemory Standalone 2021.3 release, we will no longer ship a 32-bit (x86) version. On 32-bit operating systems, you can capture snapshots using the dotMemory Command Line Tools, and analyze them with dotMemory on a 64-bit operating system.

In this blog post, we’ll explain why we are making this change, and what it means for you.

Why is this changing?

To analyze memory snapshots, dotMemory heavily relies on memory-mapped files. They come with a number of benefits:

  • High-performance I/O operations. Snapshot data is stored and loaded from disk by the operating system, which gives us maximum performance when analyzing snapshot data.
  • High-performance array walking operation. Most of our analysis is based on walking the data in a snapshot. Being able to operate on raw memory ensures there is minimal overhead.
  • To decrease garbage collection (GC) pressure. The .NET GC is not well suited for working with large arrays. By moving them into native memory, the garbage collector does not have to track that memory, which leads to better performance of other parts of dotMemory.

There is, however, a drawback to using memory-mapped files: a lot of address space is required. On 32-bit operating systems, this means dotMemory is constrained in what it can do.

On a 64-bit operating system, address space is virtually unlimited. In theory, around 18 exabytes. Even with our computer memory nowhere near that theoretical limit, having 64-bits of address space lets dotMemory analyze complex object graphs with hundreds of millions of objects!

At the same time, ever since Windows 7, usage of 32-bit versions of Windows is declining. The Steam Hardware Survey shows that most Windows users are on 64-bit versions of the operating system. Since the May 2020 update of Windows 10, Microsoft started phasing out 32-bit versions of the operating system for certain groups of customers (OEMs). And with the newly announced Windows 11, the system requirements no longer mention a 32-bit (x86) version of the operating system.

Combining these two reasons, updating the requirements for dotMemory Standalone is a logical next step. We will no longer ship a 32-bit (x86) version, starting with dotMemory Standalone 2021.3.

By supporting only 64-bit operating systems, our profiler can make better use of available system resources, and provide a smoother experience when analyzing snapshots.

What does this mean for me?

If you are profiling applications running on a 64-bit operating system, or you are analyzing snapshots on a 64-bit operating system, you’re already using the 64-bit version of dotMemory and you will not be impacted by this change. 

When you are running 32-bit processes on a 64-bit operating system, you can use the 64-bit version of dotMemory Standalone 2021.3 to capture and analyze snapshots.

If the applications you are profiling are running on a 32-bit operating system, you can use the dotMemory Command Line Tools to capture snapshots, and then analyze them with the 64-bit version of dotMemory Standalone 2021.3. If that is not an option, you can use existing versions of dotMemory Standalone.

If this change affects your current workflow, please get in touch!

image description

Discover more