当前位置:  开发笔记 > 编程语言 > 正文

寻找记忆泡泡

如何解决《寻找记忆泡泡》经验,为你挑选了2个好方法。

这要么荒谬简单,要么太复杂....

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

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

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

提前致谢!

更新:每次刷新都会导致使用额外的10-50K内存.用户报告最终应用程序停止响应.它当然就像一个内存泄漏,但FastMM(内存管理器)看不到任何泄漏.我会尝试一些其他的记忆工具...



1> gabr..:

只需F8通过关键部分并查看流程使用图(Mark Russinovich的Process Explorer非常适合).当您找到罪魁祸首方法时,重复该过程,但下降到该方法.



2> Lars Truijen..:

像AQTime这样的工具可以报​​告快照之间内存/对象使用的差异.这可能会帮助您找出不断增长的内容.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有