Thursday, September 25, 2008

This server has 1 GB or more of physical memory

This server has 1 GB or more of physical memory and HeapDeCommitFreeBlockThreshold has not been set to 262144
This topic is intended to address a specific issue called out by the Exchange Server Analyzer Tool. You should apply it only to systems that have had the Exchange Server Analyzer Tool run against them and are experiencing that specific issue. The Exchange Server Analyzer Tool, available as a free download, remotely collects configuration data from each server in the topology and automatically analyzes the data. The resulting report details important configuration issues, potential problems, and nondefault product settings. By following these recommendations, you can achieve better performance, scalability, reliability, and uptime. For more information about the tool or to download the latest versions, see "Microsoft Exchange Analyzers" at

Topic Last Modified: 2007-11-14

The Microsoft® Exchange Server Analyzer Tool reads the following registry entry to determine if Exchange has been optimally tuned based on the amount of physical memory in the system:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\HeapDeCommitFreeBlockThreshold

If the Exchange Server Analyzer finds the value for HeapDeCommitFreeBlockThreshold has not been set on an Exchange Server computer with 1 gigabyte (GB) or more of physical memory installed, a warning is displayed.

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 hexadecimal value of 0x00040000 (262144 in decimal).

Microsoft does not support any other value for the HeapDeCommitFreeBlockThreshold registry key than a hexadecimal value of 0x00040000 (262144 in decimal).

This article contains information about editing the registry. Before you edit the registry, make sure you understand how to restore the registry if a problem occurs. For information about how to restore the registry, view the "Restore the Registry" Help topic in Regedit.exe or Regedt32.exe.
  1. Open a registry editor, such as Regedit.exe or Regedt32.exe.

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

  3. Create a DWORD value called HeapDeCommitFreeBlockThreshold.

  4. Double-click the HeapDeCommitFreeBlockThreshold value and enter a hexadecimal value of 0x00040000 (262144 in decimal).

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

Before you edit the registry, and for information about how to edit the registry, see the Microsoft Knowledge Base article 256986, "Description of the Microsoft Windows Registry" (

For more information about the HeapDeCommitFreeBlockThreshold registry key, see the following Knowledge Base articles:

No comments: