您可能会收到"内存不足"错误消息,因为桌面堆限制

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 947246
症状
在窗口中打开多个应用程序窗口后,您可能无法打开任何其他窗口。有时,可能会打开一个窗口。但是,它将不包含预期的组件。此外,您可能会收到类似于以下内容的错误消息:
内存不足
原因
由于桌面堆限制出现此问题。如果关闭部分窗口,然后再打开其他窗口,可以打开这些窗口。但是,此方法不影响桌面堆栈限制。
解决方案
重要:此部分、 方法或任务包含一些介绍如何修改注册表的步骤。但是,如果不正确地修改了注册表,可能会出现严重的问题。因此,请确保仔细按照下列步骤操作。为增加保护,对其进行修改之前备份注册表。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表
让我们为您解决此问题,请转到"请为我修复它"一节。如果您希望自己修复此问题,请转到"我自己修复此问题"一节。

请为我修复它



若要修复此问题会自动在 Vista 和 Windows 7,请单击修复按钮或链接。单击文件下载对话框中,在运行并执行此修复程序中的步骤向导中的步骤。



备注:
  • 此向导可能只提供英文版本。但是,自动修复也适用于其他语言版本的 Windows。
  • 如果您不是计算机上出现问题,将 Fix 它到闪存驱动器或 CD 的解决方案,然后在出现此问题的计算机上运行。
  • 我们增加到 20480 SharedSection 注册表项的第二个值,并且增加到 1024 自动修复中的 SharedSection 注册表项的第三个值。

然后,转到"这问题解决了吗?"一节。



我自己修复此问题


若要解决此问题,请修改桌面堆大小。若要执行此操作,请按照下列步骤操作:
  1. 单击开始键入 注册表编辑器开始搜索框,然后单击regedit.exe程序列表中。

    注意: 如果提示您输入管理员密码或进行确认时,键入您的密码,或单击继续
  2. 找到并单击以下注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
  3. Windows条目中,用鼠标右键单击,然后单击修改
  4. 编辑字符串对话框中的数值数据部分中,找到对应的SharedSection条目,并再增加第二个值,并为该项的第三个值。
备注:
  • 第二个 SharedSection 注册表项的值是与交互式窗口站每个桌面堆大小。堆是必需的交互式窗口站 (WinSta0) 中创建的每个桌面。值是以千字节 (KB)。
  • 第三个 SharedSection 值是与"非交互式的"窗口站每个桌面堆大小。值是以千字节 (KB)。
  • 我们不建议您设置的值是对 20480 对于第二个 SharedSection 值 KB。
默认情况下,Windows 注册表项包含在基于 x86 的 Windows Vista 版本中的以下数据。
%SystemRoot%\system32\csrss.exeObjectDirectory=\WindowsSharedSection=1024,3072,512Windows=OnSubSystemType=WindowsServerDll=basesrv,1ServerDll=winsrv:UserServerDllInitialization,3ServerDll=winsrv:ConServerDllInitialization,2ProfileControl=OffMaxRequestThreads=16
注意:默认情况下,SharedSection 项的第二个值为 3072 在基于 x86 的 Windows Vista 的版本中。默认情况下,此项此第二个值是在基于 x64 版本的 Windows Vista 20480。

Windows Vista SP1,7,8,8.1 (32 位) / Windows Server 2008 (32 位)
SharedSection=1024, 12288,512

Windows Vista 中,7、 8 (64 位) 8.1 / Windows Server 2008,2008 R2,2012 年,2012 R2 (64 位)
SharedSection=1024, 20480,768


在 Windows Vista 和更高版本的操作系统中,内存分配是动态的。因此,是没有限制的内存分配。但是,如果您分配到桌面堆太多内存,可能会出现负性能。这就是为什么我们不建议您设置一个值,为超过 20480 的原因。

注意:桌面堆大小不受物理 RAM 的计算机上。因此,您不能通过添加物理内存来提高性能。
参考
有关类似问题的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
126962 "内存不足"错误消息出现时有大量的正在运行的程序
318677 PRB: 无法创建更多的子窗口和其他问题时达到最大允许的子窗口的 MDI 应用程序数
有关在终端服务环境中的会话内存问题的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
840342 应用程序可能无法正常运行在终端服务环境中

桌面堆有关的详细信息,请访问下面的 Microsoft 网站:

这问题解决了吗?

  • 检查问题是否已修复。如果问题已修复,您已完成此部分。如果不修复该问题,则可以 与支持部门联系.
  • 非常感谢您的反馈意见。若要提供反馈或报告与该解决方案的任何问题,请留言上"请为我修复它"博客或给我们发送 电子邮件.
fixit 修复 fixme

警告:本文已自动翻译

属性

文章 ID:947246 - 上次审阅时间:08/08/2015 02:51:00 - 修订版本: 2.0

Windows Vista Enterprise 64-bit edition, Windows Vista Home Basic 64-bit edition, Windows Vista Home Premium 64-bit edition, Windows Vista Ultimate 64-bit edition, Windows Vista Business, Windows Vista Business 64-bit edition, Windows Vista Enterprise, Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Ultimate, Windows 7 Enterprise, Windows 7 Home Basic, Windows 7 Home Premium, Windows 7 Professional, Windows 7 Ultimate, Windows 7 Starter, Windows 8, Windows 8 Enterprise, Windows 8 Pro, Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 Standard, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Standard, Windows Server 2012 Datacenter, Windows Server 2012 Standard, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Standard

  • kbprb kbtshoot kbexpertiseadvanced kbfixme kbmsifixme kbmt KB947246 KbMtzh
反馈