使用VM跟踪器进行iOS分析。脏和常驻内存导致内存警告,我该怎么办?

时间:2011-11-08 08:02:36

标签: iphone ios memory memory-management memory-warning


你好社区, 我正在尝试调试我没做的。这个应用程序在线工作并缓存文件系统上的所有内容,保存内存上的所有路径(很多路径)(我看到错误的方法,但我必须努力)。这个应用程序有一个选项,可以下载所有内容并用相对路径填充内存。
问题是,当我选中此选项时,应用程序开始下载和缓存,但在它完成之前崩溃。在模拟器上,当然一切正常 崩溃报告日志讨论了由jetsam杀死的内存警告和应用程序。 通过仪器上的分配跟踪应用程序我发现实时字节大约是7Mb左右,使用下载过程中添加的刷新机制也有帮助,下载完成后会释放旧路径。 根本没有明显的泄漏。
我开始使用VMTracker,我已经看到驻留和脏内存非常高,峰值在61Mb和21Mb左右。有些东西我没有得到。
我已经阅读了很多关于它的问题 What do "Dirty" and "Resident" mean in relation to Virtual Memory?
How can I get rid of resident dirty memory in Objective-C?
但是,因为我发布了其他脏内存来自的大多数路径?我该如何清洁呢? 谢谢,
安德烈

1 个答案:

答案 0 :(得分:6)

嗯,我发现了一个解决方案。通过各种测试,我发现可能连接正在缓存某些东西。所以我设置了NSURLCache 0byte。我的应用程序现在似乎运行了很少的脏内存,几乎一半。一个很大的改进。这是令人惊讶的两行代码。

[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];

正如我所说的一些teck谈到Apple的脏内存也可以代表数据缓存,我仍然没有尝试在URL请求中设置缓存策略,但可能效果会相同。

希望能帮助别人。