Delphi 7.0和内存泄漏?

时间:2011-04-14 15:22:23

标签: delphi memory memory-leaks fastmm

在使用FastMM4消除任何可能导致内存泄漏的代码片段(如FastMM4所示)之后,我们已经在Windows 7上测试运行我们的软件大约一个月了。这就是我所看到的到目前为止,在我的软件过程的任务管理器中。

> -CPU started out at 1% and 0%. Now it is bouncing around from 2% to 5%
> -VM usage started out at 11,852KB. Now it is at 4,900kb but bouncing
> around from 4,900kb to 5,000kb.

这是否意味着我们的软件中存在内存泄漏?我很困惑和担心。

提前致谢,

4 个答案:

答案 0 :(得分:4)

不,当内存使用率上升并且最终您的应用程序使用所有可用内存时,您会发现内存泄漏并且需要关注。

答案 1 :(得分:4)

这听起来像是非常正常的内存使用情况。该程序执行需要内存的操作,并且内存使用量会增加。该程序完成它正在做的事情并释放内存,内存使用率回落。内存泄漏是指内存使用率上升且保持上升,因为一旦完成内存就不会释放内存。

如果你有FastMM4,你不应该寻找可能导致内存泄漏的事情。只需启用完全调试模式和日志记录选项,它就会找到运行时泄漏的内存,并为您写出包含类型和堆栈跟踪的文件。

答案 2 :(得分:3)

即使某个应用程序似乎运行了好几天,仍然可能会在未使用(或不经常)的代码区域中隐藏内存泄漏。因此,当应用程序的这部分在一段时间后变为活动状态时,它们可能会成为一个问题。

为了确保所有代码都经过泄漏测试,您可以将FastMM4与单元测试一起使用(使用 DUnit ),确保尽可能多地执行代码路径。可以使用最近成为open source Delphi toolDiscoveropen source来衡量单元测试代码覆盖率。

此外,主干版本(9.4.0)中的DUnit支持每个测试用例的自动内存泄漏检测(基于FastMM4)。

答案 3 :(得分:1)

可能值得考虑调试器吗?我知道你不使用它们。我也有内存泄漏问题。我没想到它。现在使用漏洞的“监护人” - 对我而言,它变成了删除者。你可以看一下,这会让你高兴。