如何设置 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 注册表项。
开始之前
在执行本主题中的步骤之前,请注意其中包含有关编辑注册表的信息。
警告: |
---|
错误地编辑注册表会导致严重的问题,甚至可能需要重新安装操作系统。因注册表编辑不当而导致的问题可能没有办法解决。在编辑注册表之前,请备份所有重要数据。 |
步骤
设置 HeapDeCommitFreeBlockThreshold 注册表值
打开注册表编辑器,如 Regedit.exe 或 Regedt32.exe。
导航到 HKLM\System\CurrentControlSet\Control\Session Manager。
用鼠标右键单击“Session Manager”,再选择“新建”|“DWORD 值”。
将新的 DWORD 值命名为 HeapDecommitFreeBlockThreshold。
双击“HeapDecommitFreeBlockThreshold”值。
将“基数”更改为“十六进制”。
在“数值数据”字段中,输入 0x00040000。
关闭注册表编辑器,并重新启动 Exchange Server 计算机,以便使更改生效。
参考
- 有关 HeapDecommitFreeBlockThreshold 注册表项的详细信息,请参阅下列 Microsoft 知识库文章:
- 315407“XADM:The ‘HeapDeCommitFreeBlockThreshold' Registry Key”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=315407)(英文)。
- 815372“如何优化 Exchange Server 2003 中的内存使用”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=815372)。
- 325044“HOW TO:解决 Exchange 2003 和 Exchange 2000 中的虚拟内存碎片问题”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=325044)。
- 有关如何编辑注册表的信息,请参阅 Microsoft 知识库文章 256986“Microsoft Windows 注册表说明”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=256986)。