delphi – 系统错误 代码:8.没有足够的存储可用于处理此命令

delphi – 系统错误 代码:8.没有足够的存储可用于处理此命令,第1张

概述我们有几个Win32应用程序(在Delphi 2006中编码),有时用户会收到一条错误消息“系统错误。代码:8.没有足够的存储可用于处理此命令。 从stacktrace看起来它总是在CreateWnd调用期间 Main ($1edc):004146cc +070 app.exe SysUtils RaiseLastOSError00414655 +005 app.e 我们有几个Win32应用程序(在Delphi 2006中编码),有时用户会收到一条错误消息“系统错误。代码:8.没有足够的存储可用于处理此命令。

从stacktrace看起来它总是在CreateWnd调用期间

Main (edc):004146cc +070 app.exe SysUtils               RaiseLastOSError00414655 +005 app.exe SysUtils               RaiseLastOSError004ce44c +130 app.exe Controls               TWinControl.CreateWnd00535a72 +022 app.exe cxControls             TcxControl.CreateWnd004ce82a +016 app.exe Controls               TWinControl.CreateHandle00553d21 +005 app.exe cxContainer            TcxContainer.CreateHandle00586ef1 +005 app.exe cxEdit                 TcxCustomEdit.CreateHandle005c331d +005 app.exe cxDropDownEdit         TcxCustomDropDownEdit.CreateHandle004ceaf0 +074 app.exe Controls               TWinControl.UpdateShowing004ceb1e +0a2 app.exe Controls               TWinControl.UpdateShowing004cebdc +03c app.exe Controls               TWinControl.UpdateControlState004d118a +026 app.exe Controls               TWinControl.CMVisibleChanged004cb713 +2bb app.exe Controls               TControl.WndProc004cf569 +499 app.exe Controls               TWinControl.WndProc004b727d +4c1 app.exe Forms                  TCustomForm.WndProc004cb3a0 +024 app.exe Controls               TControl.Perform004c9f6a +026 app.exe Controls               TControl.SetVisible004b6c46 +03a app.exe Forms                  TCustomForm.SetVisible004baf1b +007 app.exe Forms                  TCustomForm.Show004bb151 +14d app.exe Forms                  TCustomForm.ShowModal007869c7 +0d3 app.exe UfrmPrice      770 +19 TfrmPrice.EditPrice0078655d +009 app.exe UfrmPrice      628  +0 TfrmPrice.actNewBIDExecute00431ce7 +00f app.exe Classes                TBasicAction.Execute004c2cb5 +031 app.exe ActnList               TContainedAction.Execute004c397c +050 app.exe ActnList               TCustomAction.Execute00431bb3 +013 app.exe Classes                TBasicActionlink.Execute004af384 +090 app.exe Menus                  TMenuItem.Click004b059f +013 app.exe Menus                  TMenu.dispatchCommand004b16fe +082 app.exe Menus                  TPopupList.WndProc004b164d +01d app.exe Menus                  TPopupList.MainWndProc004329a8 +014 app.exe Classes                StDWndProc7e4196b2 +00a USER32.dll                     dispatchMessageA004bea60 +0fc app.exe Forms                  TApplication.ProcessMessage004bea9a +00a app.exe Forms                  TApplication.HandleMessage004becba +096 app.exe Forms                  TApplication.Run008482c5 +215 app.exe Appname        129 +42 initialization

我从来没有能够到底是什么导致这一点,因为它发生很少,我没有关心,但我想找出原因,并希望纠正它…

编辑:全栈跟踪

编辑2:更多信息…今天经历过的客户端已经安装了我的应用程序大约4个月,它是在他的电脑上运行每天8小时。这个问题只出现在今天,并保持重现,即使他杀了我的应用程序,并重新启动它。他的系统上没有其他应用程序表现得奇怪。重新启动后问题完全消失。这是否指向Steve提到的堆短缺?

编辑3:有趣的msdn博客文章here和here关于桌面堆的话题。虽然我不知道这是否是这个问题的原因,它肯定看起来可能。

解决方法 如果你的程序使用了大量的windows资源,它可能是一个资源堆短缺。

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

此信息记录在MS Knowledge Base(或搜索“内存不足”)。关于参数值的附加细节可以在文章KB184802中找到。

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

>运行注册表编辑器(REGEDT32.EXE)。
>从HKEY_ LOCAL_MACHINE子树,转到以下项:

\System\CurrentControlSet\Control\Session Manager\SubSystem

>在屏幕的右侧双击键:

windows

>在d出窗口中,您将看到一个非常长的字段。将光标移动到字符串开头附近(值可能不同):

SharedSection=1024,3072,512

> SharedSection使用以下格式指定系统和桌面堆:SharedSection = xxxx,yyyy,zzz其中xxxx定义系统范围堆的最大大小(以千字节为单位),yyyy定义每个桌面堆的大小,zzz定义一个“非交互”窗口站的桌面堆的大小。
>将ONLY yyyy值更改为8192(或更大),然后按OK。
>退出注册表编辑器并重新启动PC以使更改生效。

祝你好运。

总结

以上是内存溢出为你收集整理的delphi – 系统错误 代码:8.没有足够的存储可用于处理此命令全部内容,希望文章能够帮你解决delphi – 系统错误 代码:8.没有足够的存储可用于处理此命令所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1282136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存