你目前正处于脱机状态,正在等待 Internet 重新连接

运行大量程序时出现“Out of Memory”(内存不足)错误信息

针对 Windows XP 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Windows XP 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

针对 Windows Server 2003 的支持已于 2015 年 7 月 14 日终止。

Microsoft 已于 2015 年 7 月 14 日终止了对于 Windows Server 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

症状
当您运行大量基于 Windows 的程序时,如果尝试启动新程序或尝试使用已在运行的程序时会出现“Out of Memory”(内存不足)错误信息,即使您拥有充足可用的物理内存和页面文件内存也是如此。
原因
如果 WIN32 子系统中的桌面堆栈用尽,则会发生此问题。

注意此问题更常出现在 Windows NT 3.5 环境中,因为该环境中桌面堆栈的默认大小为 512K。在 Windows NT 3.1 环境中,默认值为 3072K。减少默认值可提高性能。
解决方案
重要说明 此部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请一定严格按照下列步骤操作。为了获得进一步保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表
若要我们为您解决该问题,请转到“帮我修复此问题”部分。如果您想亲自解决该问题,请转到“我自己修复此问题”部分。

帮我修复此问题



若要自动修复此问题,请单击“修复此问题”按钮或链接。单击“文件下载”对话框中的“运行”,并按照修复此问题向导中的步骤执行操作。


注意
  • 该向导可能只有英文版本。但是自动修复功能同样适用于其他语言版本的 Windows。
  • 如果所使用的计算机中并未出现此问题,则可将“修复此问题”解决方案保存至闪存驱动器或 CD 中,然后在出现此问题的计算机上运行该解决方案。
  • 如果此方法仍然无法解决问题,请增加计算机的内存。

接下来,请您转到“此方法是否已修复问题?”部分。



我自己修复此问题

若要解决此问题,请增加桌面堆栈的大小:
  1. 运行注册表编辑器 (Regedt32.exe)。
  2. HKEY_LOCAL_MACHINE
    子树,转到以下项:
    \System\CurrentControlSet\Control\Session Manager\SubSystems
  3. 选择“Windows”值。
  4. “编辑”菜单中,选择“字符串”
  5. 增加 SharedSection 参数。

    对于 Windows NT:
    SharedSection 使用以下格式指定系统和桌面堆栈:
    SharedSection=xxxx,yyyy
    yyyy 数字后面添加“,256”或“,512”。

    对于 Windows 2000、Windows XP 和 Windows Server 2003:
    SharedSection 使用以下格式指定系统和桌面堆栈:
    SharedSection=xxxx,yyyy,zzzz
    对于 32 位操作系统,将 yyyy 值提高到“12288”;
    zzzz 值提高到“1024”。
    对于 64 位操作系统,将 yyyy 值提高到“20480”;
    zzzz 值提高到“1024”。
更多信息
Windows NT 对桌面上运行的所有基于 Windows 的程序使用特殊的内存堆栈。桌面堆栈用于所有对象(窗口、菜单、笔、图标等)。运行大量基于 Windows 的程序时,此堆栈可能内存不足。如果没有足够的内存来满足分配请求,则系统通常返回一个错误,通知用户运行时内存不足。某些程序无法正确处理失败,在某些情况下,可能没有足够的内存来创建错误消息对话框。结果,请求的操作失败且没有任何提示。

使用注册表编辑器查看 SharedSection 注册表项时,该项是一个长字符串。此项的默认值如下。
%SystemRoot%\system32\csrss.exeObjectDirectory=\WindowsSharedSection=1024,3072,512Windows=OnSubSystemType=WindowsServerDll=basesrv,1ServerDll=winsrv:GdiServerDllInitialization,4ServerDll=winsrv:UserServerDllInitialization,3ServerDll=winsrv:ConServerDllInitialization,2ProfileControl=OffMaxRequestThreads=16				


第一个 SharedSection 值 (1024) 用于定义所有桌面的常用堆栈大小。这包含全局句柄表(窗口句柄是在计算机范围内是唯一的)和共享系统设置(如 SystemMetrics)。通常不需要更改此值。

第二个 SharedSection 值 (3072) 用于控制与交互式窗口站(用于 Windows 对象)关联的桌面堆栈的大小。此静态值用于防止操作错误的应用程序消耗过多资源。由于桌面堆栈被映射到每个进程的地址空间中,因此不应将此值设置为任意高的值(因为这会降低性能),而只应将该值提高到足以运行所有所需应用程序的程度。

第三个 SharedSection 值 (512) 用于控制与“非交互式”窗口站相关联的每个桌面的桌面堆栈的大小。如果此值不存在,则非交互式窗口站的桌面堆栈大小将与交互式窗口站的指定大小(第二个 SharedSection 值)相同。
有关 SharedSection 注册表项参数的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
184802PRB:User32.dll 或 Kernel32.dll 无法初始化

此方法是否已修复问题?

  • 检查该问题是否已修复。如果该问题已修复,则您已完成此部分。如果该问题未修复,则可以联系技术支持人员
  • 非常感谢您提供反馈意见。若要提供反馈意见或报告使用此解决方案出现的任何问题,请在“帮我修复此问题”博客中留言或向我们发送电子邮件
prodnt low failure fixed size page file fixit fix it fixme
属性

文章 ID:126962 - 上次审阅时间:11/10/2010 13:25:00 - 修订版本: 3.0

Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows NT Workstation 3.5, Microsoft Windows NT Workstation 3.51, Microsoft Windows NT Workstation 4.0 开发员版, Microsoft Windows NT Server 3.51, Microsoft Windows NT Server 4.0 Standard Edition, Microsoft Windows NT Advanced Server 3.1, Microsoft Windows XP Home Edition, Microsoft Windows XP Professional Edition, Microsoft Windows Server 2003 Datacenter Edition, Microsoft Windows Server 2003 Enterprise Edition, Microsoft Windows Server 2003 Standard Edition, Microsoft Windows Server 2003 Web Edition

  • kbenv kbmsifixme kbfixme KB126962
反馈