本文有助于修复在 Windows 中打开许多应用程序窗口时发生的“内存不足”错误。
原始 KB 数: 947246
现象
在 Windows 中打开许多应用程序窗口后,可能无法打开任何其他窗口。 窗口有时可能会打开,但它不包含预期的组件。 此外,你还会收到类似于以下内容的错误消息:
内存不足
原因
此问题因桌面堆限制而发生。 关闭某些窗口,然后尝试打开其他窗口时,这些窗口可能会打开。 但是,此方法不会影响桌面堆限制。
解决方法
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表。
若要解决此问题,请按照以下步骤修改桌面堆大小:
单击“开始”,在“开始搜索”框中键入 regedit,然后在“程序”列表中选择regedit.exe。
注意
如果系统提示输入管理员密码或进行确认,请键入密码,或单击“ 继续”。
找到并选择
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
注册表子项。右键单击 Windows 条目,然后选择“ 修改”。
在“编辑字符串”对话框的“值数据”部分中,找到该
SharedSection
条目,然后增加第二个值和此项的第三个值。注意
- 注册表项的第
SharedSection
二个值是与交互式窗口工作站关联的每个桌面的桌面堆的大小。 在交互式窗口工作站(WinSta0)中创建的每个桌面都需要堆。 该值以 KB 为单位。 - 第三
SharedSection
个值是与非交互式窗口工作站关联的每个桌面的桌面堆的大小。 该值以 KB 为单位。 - 不建议为第二
SharedSection
个值设置超过 20480 KB 的值。
- 注册表项的第
默认情况下,Windows 注册表项在基于 x86 的 Windows 7 Service Pack 1 版本中包含以下数据。
%SystemRoot%\system32\csrss.exe
ObjectDirectory=\Windows
SharedSection=1024、12288,512
Windows=On
SubSystemType=Windows
ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off
MaxRequestThreads=16
Windows 7 Service Pack 1 (64 位) / Windows Server 2008 R2, 2012 R2 (64 位)
SharedSection=1024、20480,768
内存分配在以后的操作系统中是动态的。 内存分配没有限制。 但是,如果将过多的内存分配给桌面堆,则可能会发生负性能。 因此,我们不建议设置超过 20480 的值。
注意
桌面堆大小不受计算机上的物理 RAM 影响。 无法通过添加物理 RAM 来提高性能。
此问题是否修复了问题
检查问题是否已修复。 如果问题未解决, 请联系支持人员。