6

在分析我的 iOS 应用程序时,我多次执行一个简单的任务,我从堆栈中推送和弹出一个视图,然后进行 heapshot。每次都执行相同的代码,推送的视图只包含一些图像,一旦视图被弹出,这些图像就会被删除。

仪器截图

现在因为几乎一半的堆快照的持久计数为 0,假设没有废弃的内存是否安全?

我听说持久计数大于零的行可能是因为一些内部缓存。

我正在使用 Xcode 4.2.1,而应用程序正在使用 ARC。

编辑:

感谢 Kendall Helmstetter Gelner,我设法进一步调试了这个问题。我可能不应该使用模拟器来调试它。我现在已经在设备上运行了它,现在看起来好像有一个对象没有被释放:

在设备上运行的应用程序的快照

在查看扩展的详细视图后,我想我已经找到了问题的原因。

4

1 回答 1

2

仅从该屏幕截图中很难说出可能缓存的内容 - UIImage 将缓存内容,可能还会缓存其他一些系统元素。看起来您可能正在模拟器中运行它,您是否在设备上尝试过 heapshot?

您还可以选择旁边的“隐藏系统库”,并更好地了解您自己的代码涉及到多少。

于 2012-02-03T06:33:30.333 回答