我有一个通用应用程序,它本质上是一个包含图像和文本的文章列表,以及应用程序左侧下方的菜单。我有谷歌分析,以及解析的框架。
iPad 和 iPhone 上的应用程序的唯一区别是,侧边菜单在 ipad 上始终可见,并且一些界面对象会四处移动。(列表的单元格布局不同——但内容相同)。
图像是使用一组类异步加载的,这些类是我编写的,用于下载/保存在 NSCache 对象中,并使用 NSOperationQueue 保存在磁盘上。(当用户离开应用程序时,磁盘缓存被擦除)。NSCache 设置为最大大约 10 mb。(假设图像大小为图像高度*图像宽度*每张图像 4 字节)。(这里的代码两者都是相同的,所以它不应该是罪魁祸首,但它是应用程序内存使用的一大块)。
我在运行 iOS 5.0 的旧 iphone4 上遇到内存警告/崩溃问题,因此我使用 Activity Monitor Instrument 运行该应用程序,并注意到一些非常奇怪的事情:
在 iPad(运行 iOS 5.1 的 iPad 2)上,应用程序启动,加载了立即可见的图像,并且使用了大约 16mb 的内存。
在它推出的 iPhone4 上,加载了可见图像并使用了大约 35mb 的内存——比我预期的要多得多。
为了检查这是否是操作系统内存问题,我还在运行 iOS6 的 iPhone5 上运行了该应用程序,它使用的内存量与 iPhone 4 大致相同。
我检查了我的媒体和故事板文件,看看是否有任何不同,但我找不到任何可以以任何显着方式改变内存使用的东西。
有什么办法可以减少iphone上应用程序的内存使用?我想不出它会使用这么多内存的原因。