如何设置 HeapDeCommitFreeBlockThreshold 注册表值

 

上一次修改主题: 2011-01-13

在指定地址释放内存时,操作系统的堆管理器将检查围绕此地址存在多少可用连续字节。检查完成后,堆管理器可以执行下列两项操作之一:

  • 提交连续内存块。
  • 回收连续内存块,并只将其标记为保留。

HeapDecommitFreeBlockThreshold 注册表项指定可回收内存的最小连续字节数。默认情况下,堆管理器未必会合并所有可用块或进行新的分配;因此,块可能被回收,但在虚拟地址空间中成为无用的洞。这会导致生成虚拟内存碎片以及性能下降,并最终导致系统不稳定。

在安装有 1 GB 或更多物理内存的系统上,通过控制回收的内存块大小可以优化性能。HeapDecommitFreeBlockThreshold 注册表项提供了在释放内存时对内存处理方式的控制。将此值添加到注册表时,必须将其配置为十六进制值 0x00040000(十进制值 262144)。

除十六进制值 0x00040000(十进制值 262144)外,Microsoft 不支持 HeapDecommitFreeBlockThreshold 注册表项的其他任何值。此外,只有 Exchange Server 2000 和 Exchange Server 2003 支持使用 HeapDecommitFreeBlockThreshold 注册表项,而且只有在安装了 1 GB 或更多物理内存时,才支持使用该注册表项。在所安装物理内存小于 1 GB 的系统上,或在未运行 Exchange 2000 Server 或 Exchange Server 2003 的系统(不管所安装的物理内存有多大)上,不要使用 HeapDecommitFreeBlockThreshold 注册表项。

开始之前

在执行本主题中的步骤之前,请注意其中包含有关编辑注册表的信息。

Caution警告:
错误地编辑注册表会导致严重的问题,甚至可能需要重新安装操作系统。因注册表编辑不当而导致的问题可能没有办法解决。在编辑注册表之前,请备份所有重要数据。

步骤

设置 HeapDeCommitFreeBlockThreshold 注册表值

  1. 打开注册表编辑器,如 Regedit.exe 或 Regedt32.exe。

  2. 导航到 HKLM\System\CurrentControlSet\Control\Session Manager

  3. 用鼠标右键单击“Session Manager”,再选择“新建”|“DWORD 值”。

  4. 将新的 DWORD 值命名为 HeapDecommitFreeBlockThreshold

  5. 双击“HeapDecommitFreeBlockThreshold”值。

  6. 将“基数”更改为“十六进制”。

  7. 在“数值数据”字段中,输入 0x00040000

  8. 关闭注册表编辑器,并重新启动 Exchange Server 计算机,以便使更改生效。

参考