delphi - 寻找内存泡沫

标签 delphi memory profiling

这要么简单得离谱,要么太复杂。 。 。 .

在我们的应用程序中,有一个表单从数据库加载一些数据并将其显示在网格中(简单地说)。当数据刷新时,总内存使用量攀升约 50K(毫无疑问取决于显示的数据量)。听起来像是内存泄漏,但是当我们关闭应用程序时,FastMM 设置为 ReportMemoryLeakOnShutDown := True,并且它不会报告任何异常内存泄漏。

看来我们有一个内存泡或内存袋。每次运行时都会积累更多内存的东西。就像TList不断添加新项目,但旧项目永远不会被删除。然后在关闭过程中所有元素都被销毁。网格中显示的行不会增加,但幕后有很多对象列表使此工作正常进行,因此它可以在任何地方。

所以我的问题是,是否有人知道一个好技巧来找出应用程序的哪些部分正在使用多少内存。 。 。 。我可以想到很多繁琐的方法来做到这一点(我正在这样做 - 检查我能找到的每个列表),所以我希望有人有我没有想到的技巧或技巧。

提前致谢!

更新:每次刷新都会导致额外使用 10-50K 内存。用户报告说应用程序最终停止响应。它确实像内存泄漏一样,但 FastMM(内存管理器)没有发现任何泄漏。我会尝试一些其他的内存工具。 。 。

最佳答案

只需按 F8 浏览关键部分并查看进程使用图(Mark Russinovich 的 Process Explorer 非常适合此操作)。当您找到罪魁祸首的方法时,重复该过程,但深入到该方法。

关于delphi - 寻找内存泡沫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/509767/

相关文章:

string - 如何获得耗时(以毫秒为单位)

excel - 如何在工作簿的最后一页之后添加工作表?

c++ - 如何检测错误写入

c++ - C++ 中是否有标准的 3d vector 类

C,如果分配不能就地增长,则 realloc 失败

c - 让两个指针指向同一个内存块的正确方法

java - JMap 替代品可用吗?

Delphi:模仿 MS OneNote 的数据结构

xml - 从函数返回 XML 文档

delphi - OpenGL:如何将 2D 形状车床成 3D?