Running Low on Virtual Memory and Excessive Page File Usage

[Today’s post comes to us courtesy of Shawn Sullivan]


If you are experiencing the following symptoms, then check the value for the HeapDecommitFreeBlockThreshold registry key found under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager.


  1. You are receiving virtual memory errors like the one below.

    “Your system is low on virtual memory. Windows is increasing the size of your virtual memory paging file. During this process, memory requests for some applications may be denied. For more information, see Help”

  2. Task Manager shows page file usage growing to excessive proportions (10+ GB as an example), as well as individual processes consuming up to 1 GB of memory.

  3. Applications fail or will not initiate.

  4. Server performance in general suffers.

We have seen a few cases where customers following KB 315407 The “HeapDecommitFreeBlockThreshold” Registry Key may attempt to copy and paste the 0x0004000 value specified from the article into the hexadecimal value data for the REG_DWORD. Regedit does not recognize this format and will convert the data to 41000400 hexadecimal (1090520064 decimal).

This setting is meant to control virtual address space fragmentation by increasing the amount of contiguous free space required before the heap manager frees up any memory. When set to 0, the heap manager will free each 4 KB page as it becomes available. The only other supported value for this key is 0x0004000 hexadecimal (262144 decimal). This is documented in the following TechNet article:

http://technet.microsoft.com/en-us/library/9f4e9cbd-9f8b-4088-8d2a-568f1565e95b.aspx

If you find yourself troubleshooting an extremely high page file, or if you are implementing this for the first time, make sure that the value for the HeapDecommitFreeBlockThreshold is either 0x00040000 hexadecimal (262144 decimal) or 0. Changing this value requires a server reboot.

Note: To avoid the potential problems with incorrectly setting this value, we recommend leaving the default setting of 0 on Small Business Server.