When memory is freed at a given address, the 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.
- Decommit the contiguous memory block and mark it as reserved only.
Note On computers that have one gigabyte or more of RAM, apply the following setting for maximum performance:
Value Name: HeapDecommitFreeBlockThreshold
Value Type: REG_DWORD
Value Data: 40000 (hex)
On computers that have less than one gigabyte of RAM, do not use the HeapDecommitFreeBlockThreshold registry key unless intense memory fragmentation is occurring.
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. The HeapDecommitFreeBlockThreshold registry key provides better control of how the memory is handled as it is freed. To add this key, you need to edit the registry.
To add the HeapDecommitFreeBlockThreshold registry key:
- Start Registry Editor (Regedt32.exe).
- Locate and click the following key in the registry:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
- On the Edit menu, click Add Value, and then add the following registry value:Value name: HeapDecommitFreeBlockThreshold
Data type: REG_DWORD
Value Data: The number of bytes
This value specifies the number of freed bytes above which the heap manager decommits the memory (instead of retaining and reusing the memory). If you set this registry key to a high value (for example, 262144), the heap manager is more effective when making sure that no bytes are decommitted. Therefore, virtual address fragmentation is lessened or even avoided.
Note This value is the number of bytes in decimal. The recommended value is 262144 which corresponds with a hex value of 0x00040000.
- Quit Registry Editor.
- Restart your computer.
Article ID: 315407 - Last Review: Jan 7, 2017 - Revision: 1