这是这个问题的后续:如何解释 FastMM 或 GetProcessMemoryInfo 报告的内存使用情况的差异? https://stackoverflow.com/q/9704786/184404
我的 Delphi XE 应用程序使用大量内存,有时会导致内存不足异常。我试图了解导致此内存使用的原因和原因,虽然 FastMM 报告内存使用率较低,但在请求 TProcessMemoryCounters.PageFileUsage 时,我可以清楚地看到应用程序使用了大量内存。
我想了解导致此问题的原因,并希望获得一些有关如何处理该问题的建议:
- 有没有办法知道该内存中包含什么以及它被分配在哪里?
- 是否有一些工具可以在 Delphi 应用程序中按行/过程跟踪内存使用情况?
- 关于如何处理此类问题有什么一般建议吗?
EDIT 1:下面是FastMMUsageTracker的两张截图,表明系统已经分配了内存。
图注:浅红色是FastMM 分配的,深灰色是系统分配的。
我想了解是什么导致系统使用这么多内存。可能是通过了解该内存中包含的内容或者哪行代码或过程导致了该分配。
EDIT 2:出于多种原因,我不想使用 AQTime 的完整版本:
- 我使用多个虚拟机进行开发,它们的许可系统是 PITA(我已经是 TestComplete 的注册用户)
- LITE 版本没有提供足够的信息,如果没有确定 FULL 版本会给我提供有价值的信息,我不会浪费钱
还有其他建议吗?
另一个问题可能是堆碎片。这意味着您有足够的可用内存,但所有可用块都太小。您可以使用以下源版本直观地看到它FastMM http://sourceforge.net/projects/fastmm/并按照建议使用 FastMMUsageTracker.pashere https://stackoverflow.com/a/1701917/1242.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)