How to Set the HeapDeCommitFreeBlockThreshold Registry Value


Topic Last Modified: 2011-01-13

When memory is freed at a given address, the operating system heap manager checks how many contiguous bytes are free around that address. After that check is complete, the heap manager can do one of two things:

  • Keep the contiguous memory block committed.

  • De-commit the contiguous memory block and mark it as reserved only.

The HeapDecommitFreeBlockThreshold registry key specifies the number of contiguous bytes above which the memory is de-committed. By default, the heap manager does not necessarily combine all free blocks or make new allocations; therefore, blocks may be de-committed and become useless holes in the virtual address space. This can lead to virtual memory fragmentation, poor performance and ultimately system instability.

On systems with 1 GB or more of physical memory installed, performance is optimized by controlling the size of the chunks of de-committed memory. The HeapDecommitFreeBlockThreshold registry key provides control of how the memory is handled as it is freed. When adding this value to the registry, you must configure it with a hex value of 0x00040000 (262144 in decimal).

Microsoft does not support any other value for the HeapDecommitFreeBlockThreshold registry key a hex value of 0x00040000 (262144 in decimal). In addition, only Exchange Server 2000 and Exchange Server 2003 support the use the HeapDecommitFreeBlockThreshold registry key, and only when there is 1 GB or more of physical memory installed. Do not use the HeapDecommitFreeBlockThreshold registry key on a system that has less than 1 GB of physical memory installed, or on a system that is not running Exchange 2000 Server or Exchange Server 2003, regardless of how much physical memory is installed.

Before you perform the procedure in this topic, be aware that the procedure contains information about editing the registry.

Incorrectly editing the registry can cause serious problems that may require you to reinstall your operating system. Problems resulting from editing the registry incorrectly may not be able to be resolved. Before editing the registry, back up any valuable data.

  1. Open a registry editor, such as Regedit.exe or Regedt32.exe.

  2. Navigate to HKLM\System\CurrentControlSet\Control\Session Manager.

  3. Right-click Session Manager and select New | DWORD Value.

  4. Name the new DWORD value HeapDecommitFreeBlockThreshold.

  5. Double-click the HeapDecommitFreeBlockThreshold value.

  6. Change Base to Hexadecimal.

  7. In the Value data field, enter 0x00040000.

  8. Close the registry editor and restart the Exchange Server computer for the change to take effect.