【发布时间】:2011-03-16 17:12:22
【问题描述】:
我正在开发一个 RSS 阅读器类型的 iPhone 应用程序,它即将完成,但是我昨天升级到带有 iOS 4.3 的 Xcode 4,并且遇到了一些严重的内存问题。我的应用程序现在经常收到内存警告,我正在处理 didReceiveMemoryWarning,并释放我所有的缓存图像等,但这并不能提供良好的用户体验。我也一直在使用 Instruments 来尝试诊断问题,但这带来的问题多于答案。
• SDK 4.3 是否使用更多内存?在升级之前我没有收到内存警告。不确定这是否相关,但我的大部分测试都是在装有 iOS 4.2 的 iPhone 3G 上进行的(3G 不支持 4.3)。
• 为什么分配工具工具的活动字节列与活动监视器工具中的实际内存列不匹配?活动监控工具总是报告更多的内存使用情况。
• 根据泄漏,我的应用程序在模拟器或实际 iPhone 上没有泄漏内存,但是当我查看分配时,似乎当我在视图之间转换然后弹出视图时,实时字节列没有返回到它以前的值,这与泄漏内存一致? (是的,子视图在弹出后会被释放)
• 我的应用程序在启动时经常报告内存警告,但仅在我分析存在泄漏的应用程序时才如此。泄漏会导致额外的内存开销吗?
• 也许这是一个很难回答的问题,但对于 iPhone 应用程序来说,合理的内存占用是多少?当我运行泄漏时,我的应用程序几乎肯定会在运行几分钟后由于内存不足而被终止,但泄漏工具中的分配报告我在应用程序终止时使用的内存少于 2 MB。
• 为什么活动监视器仪器有一个虚拟内存列?我读过的所有内容都表明 iPhone 不使用虚拟内存?
【问题讨论】:
-
通常你应该将一组问题分解成单独的问题,除非这些问题紧密交织在一起。这有助于提高网站的可搜索性和可用性。
标签: iphone memory-management memory-leaks xcode4