第一次机会异常:系统错误8:没有足够的存储空间来执行命令

时间:2009-04-10 01:23:53

标签: delphi delphi-2009

我该如何调试这样的东西?我需要调试器停下来告诉我问题所在。不要只在事件日志中显示它然后挂起。

第一次机会异常:系统错误8:没有足够的存储空间来执行命令

我正在使用delphi 2009.问题不会经常发生。我并不急于通过OutputDebugString调用来调试我的程序来追踪它!

谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

您正在查看服务器上的资源泄漏,很可能......处理相关或内存相关......

我已经发生了很多这种情况,情况总是如此......可能有其他原因,但我认为资源泄漏是你的第一原因......

您将不得不找到并修复它,或者开始对所有内存分配进行调试检查,处理分配,并在无法获取内存或处理时随时记录它们。

您的CLIENT计算机也可能没有资源,但通常是服务器出错...

没有做到这一点,让我们更多地了解你在做什么,代码是什么样的,等等,以帮助发现问题。仅基于错误,不是很多...

答案 1 :(得分:0)

如果您的程序使用大量Windows资源,则可能是资源堆短缺。

可以增加一个注册表项来提高XP的堆大小。对于Vista,Microsoft已将默认值设置得更高。我建议将默认值3072更改为至少8192。

此信息记录在知识库文章ID 126962中(或搜索“Out of Memory”)。有关参数值的其他详细信息,请参阅知识库文章ID 184802。

我建议您阅读知识库文章,但有关更改的基本信息是:

1)运行注册表编辑器(REGEDT32.EXE)。

2)从HKEY_ LOCAL_MACHINE子树,转到以下文件夹:

   \System\CurrentControlSet\Control\Session Manager\SubSystem

3)在屏幕右侧双击按键:

   windows

4)在弹出窗口中,您将看到一个非常长的字段。将光标移动到字符串开头附近寻找此值(值可能会有所不同):

   SharedSection=1024,3072,512

5)SharedSection使用以下格式指定系统和桌面堆:SharedSection = xxxx,yyyy,zzz其中xxxx定义系统范围堆的最大大小(以千字节为单位),yyyy定义每个桌面堆的大小,zzz定义了“非交互式”窗口站的桌面堆大小。

6)仅将yyyy值更改为8192(或更大),然后按OK。

7)退出注册表编辑器并重新启动PC以使更改生效。

祝你好运