小编Bou*_*gui的帖子

Delphi - 检查内存是否"按时"发布

我有一个没有内存泄漏的GUI应用程序.我已经通过FastMM在多个测试周期中证实了这一点.在一个特定客户端的服务器上,我得到随机崩溃.服务器规格与我们其他客户端的规格完全一致(我们实际上已尝试过各种硬件),程序使用的文件也是如此(据我所知,我有一些超敏感材料)无法访问,但似乎没有任何与众不同的东西).

我尝试过像EurekaLog和MadShi这样的人,可能会缩小这个问题的范围,但不幸的是,他们似乎只是偶然发现了一个例外,而不是所有时间.当它发生时,它通常会在崩溃之前显示一个或多个"Out of memory"错误.

所以我想也许有些对象可能"太迟"了,即只有当应用程序关闭时才会被释放,而不是当我意味着释放它们时?我见过FastMMUsageeTracker演示,但实际上并没有真正理解它.有文件吗?或者有人可以放入(有些可访问的)单词,我怎么去检查这个?

或者,检测应用程序是否接近其"内存限制"的最佳方法是什么,以便采取一些预防措施?如果我理解正确,一个普通的Delphi应用程序是32位,它应该很好处理高达2Gb的内存(当然硬件支持它),对吗?

PS:Delphi 2009或XE,如果相关的话

谢谢!

编辑 - 问题可能已解决

我们能够找到一个问题,一个弹出窗口关闭并在一段时间后自动释放自己的速度比它消失的速度快得多.随着时间的推移,这将占用大量内存,然后任何内存分配基本上会使其超越边缘并触发"内存不足"问题.

这可以解释为什么堆栈跟踪不一致的地方.

我并不完全相信这是我们唯一的问题,因为尽管不太可能,但在我们的应用程序运行多年之前,这种情况很可能已经发生,但不知何故它没有.我会在这个问题上做更多的挖掘.

感谢所有回复的人,每个答案实际上都包含有价值的信息.

memory delphi out-of-memory

7
推荐指数
2
解决办法
5678
查看次数

Delphi - CompareStr和CompareString之间的差异

我希望有人可以为我阐明一下:在Delphi 2009中,CompareStr(在SysUtils中定义)和CompareString(从Windows API)函数之间有什么区别?

两者都允许您指定要使用的语言环境,由于可用的比较标志,Windows是否更加"完整"?那么一个比另一个快吗?

delphi string-comparison

5
推荐指数
1
解决办法
2179
查看次数

标签 统计

delphi ×2

memory ×1

out-of-memory ×1

string-comparison ×1