由于桌面堆限制,你可能会收到错误"内存不足"
09/08/2020
本文内容
本文可帮助修复在 Windows 中打开多个应用程序窗口时发生的"内存不足Windows。
适用于: Windows 7 Service Pack 1,Windows Server 2012 R2
原始 KB 编号: 947246
症状
在应用程序窗口中打开Windows,可能无法打开任何其他窗口。 窗口有时可能会打开,但不包含预期组件。 此外,您会收到类似于以下内容的错误消息:
内存不足
原因
此问题出现的原因是桌面堆限制。 关闭一些窗口,然后尝试打开其他窗口时,这些窗口可能会打开。 但是,此方法不会影响桌面堆限制。
解决方案
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 若要详细了解如何备份和还原注册表,请参阅如何在 Windows 中备份和还原注册表。
若要解决此问题,请执行以下步骤来修改桌面堆大小:
单击 "开始",在"开始搜索"框中键入 regedit, 然后在regedit.exe列表中选择"注册表 "。
备注
如果系统提示你输入管理员密码或进行确认,请键入您的密码,或单击"继续 "。
找到注册表子 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems 项,然后选择该子项。
右键 单击"Windows",然后选择"修改 "。
在"编辑 字符串"对话框的"值数据"部分,找到条目,然后增加此条目的第二个值和第 SharedSection 三个值。
备注
注册表项的第二个值是每个与交互式窗口站关联的桌面堆 SharedSection 的大小。 在 WinSta0 应用程序交互窗口站中创建的每个桌面都需要 (堆) 。 该值以千字节 (KB) 为单位。
第三个值是与非交互窗口站关联的每个桌面的 SharedSection 桌面 堆大小。 该值以千字节 (KB) 为单位。
建议不要为第二个值设置超过 20480 KB SharedSection 的值。
默认情况下,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 来提高性能。
这是否修复了此问题
检查该问题是否得到解决。 如果问题未解决,请联系 支持人员。
参考