内存不断增长,但没有报告泄漏。

4

我有一个非常占用内存的应用程序...在Core Graphics例程和自定义像素处理例程中进行了大量的图像处理。

就我所知,我已经非常小心地处理了内存,但是随着我的应用程序运行时间越来越长,我注意到内存在Xcode 5的内存报告中逐渐增加。我已经在Instruments中多次运行它,但是我没有看到任何泄漏。

有什么想法可以调试这个问题或者我可以从哪里查找?

谢谢。


我不知道仪器会在有泄漏时告诉你。据我所知,它的作用是显示正在使用内存的内容,并让你配对相关引用,以便确定泄漏发生的位置。 - jraede
@jraede,但是Valgrind可以。我猜这值得一试。 - Kamiccolo
3
"Instruments 中的 Leaks 工具可以做到这一点。" - BergQuester
并非所有的内存浪费都是泄漏。还有保留循环和对象引用超出其有用性的情况。 - BergQuester
等等,你是在告诉我我已经花了几个小时来配对参考文献,而我本可以只需点击“泄漏”工具吗? - jraede
1
@jraede 请记住,内存泄漏并不等同于引用循环。ARC代码很少会出现泄漏,但引用循环却很常见。引用循环更难以发现和修复。 - rmaddy
1个回答

2

您可以使用工具查看内存分配情况,以及查看图像的保留/释放/自动释放生命周期和每个生命周期的调用堆栈。

如果内存增长而没有泄漏,则仍在某处占用内存。


2
真正的答案是要了解Allocations工具。这篇博客也非常有帮助:http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/ - pizzafilms
虽然这个视频有点过时,而且是在ARC之前的,但WWDC 2010高级内存分析与Instruments视频仍然非常有帮助。 - pizzafilms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接