我有这种情况,加载和关闭文档的周期吃了几Mb的RAM.当应用程序退出时,此内存不会被泄漏,因为它拥有它并清理它(Visual Leak Detector和Mac Leak工具就此达成一致).但是,我想知道它的发展方向.我假设它是应用程序中的某种缓存,当文档加载时会填充,但在文档关闭时不会释放.我可以使用哪些方法或工具来确定这些分配的位置?
更新:
在Hans的帖子后,我在应用程序中添加了一个循环,以反复打开和关闭文档.我发现在加载前几个文档后,内存使用率(Process Explorer报告的“Private Bytes”)有一个初始跳跃,但之后它不再增加.因此,这表明没有新的分配,而明显的增加可能主要是由于寻呼的假象.
我还仔细研究了Mac上的Instruments,这对于查看分配发生的位置非常有用:创建一个由Allocations和Leaks工具组成的工具,然后在周期的开始和结束时添加堆快照,并在快照列表它将显示相对于上一个快照的所有分配增量.这表明在Mac上,内存分配正在增加,但这是由于CoreGraphics绘图等内部缓存,我们几乎无法控制.