|
1
7
任务管理器不是检测内存泄漏的正确工具。Delphi会分配大块内存,并将其保留以备将来使用,因此即使在释放所有资源后,分配的内存也会有一定的增加。任何其他结果(以及更详细的答案)都只能通过使用专门的内存分析工具来获得。AQTime是第一个想到的,或者如果你能找到旧的但有用的MemProof,它会对你有很大帮助(MemProof是免费的,对于内存分析来说,它比AQTime更方便)。 |
|
|
2
4
FastMM很可能在应用程序终止时不会显示内存泄漏(例如,因为所有对象都是所拥有的TComponent,而所有者会释放它们)。
您是否使用了显示当前内存使用情况的窗体的FastMM单元?
<编辑>
上周我手头有一个第三方DLL,它不是用Delphi编写的。
注意:我即将在上发布FastMM的更新 --jeroen |
|
|
3
4
答案: 我刚刚从我的项目中删除了FastMM,在释放了所有这些子窗口后,程序返回到了几个MB。许多人可能会争辩说,这不是一种不当行为,FastMM这样做是为了进行某种古怪的内存优化。它们可能是真的。然而,它可能对我的应用程序有好处,但对其他正在运行的应用程序可能没有好处。 所以,至少我们知道是谁造成了这种情况。我担心了一整天,可能程序正在像一个旧水桶一样泄漏RAM。我现在松了一口气。 更新:
为了确认这种行为是由FastMM生成的(正如Barry Kelly所建议的),我创建了第二个程序,该程序分配了大量RAM。一旦Windows的RAM用完,我的程序内存利用率就恢复到原来的值。
我的程序没有泄漏。问题解决了。 |
|
|
4
0
FastMM的内存泄漏跟踪的主要限制是它只能在关闭程序时运行。这可能是因为你仍然持有对对象或其他数据的引用,这些数据在你关闭程序时会被清除,但在那之前一直存在。 例如,当您关闭MDI子窗口时,是对它们调用“自由”或“释放”,还是只是让它们消失?如果它们被隐藏但没有被释放,它们仍将留在记忆中。 |
|
|
5
0
如果关闭MDI窗体,它不会自动释放。使用Action=caFree(谷歌搜索)来确保表单也被释放。 |
|
zeus · 如何在调整数组大小后保持指向动态数组的指针有效? 1 年前 |
|
|
SignalOne · 德尔福(FMX)循环参考 1 年前 |
|
|
Sascha Ott · 如何从线程调用线程的方法? 1 年前 |
|
|
user1580348 · 问题:如何在上次最小化后还原应用程序? 1 年前 |
|
tua · Delphi的TLinkLabel坏了吗? 1 年前 |
|
|
Frank.Wu · delphi:RGB到HSL不正确 1 年前 |