我一直在阅读很多关于在 Instrument's 中跟踪内存使用情况的文章,但发现很少与 Monotouch 结合使用。
这里似乎有三个反对的主张:
- 使用Instruments的Allocation实用程序。“活动字节”的数量是应用程序使用的物理内存量。
- 使用内存监视器插件。从进程列表中,选择您的应用并检查“真实内存”列。这是当前使用的 RAM 量。
- 使用VM Tracker并制作自动快照。如果您想要的是“脏大小”。
据我观察:
- 一旦触发 GC,“Real Memory”就会下降
- 即使我的“Live Bytes”保持在 30MB 左右,我最终也会收到内存警告
- 通过恒定的“Live Bytes”,“Real Memory”可以显着增加并轻松增长到 200MB 或更多。
- 在使用 QLPreviewController 并查看一个非常大的 Word 文档(1000 页)时,滚动浏览该文档会疯狂地增加真实内存。如果收到内存警告,则实际内存和活动字节都不会下降。最终,应用程序会崩溃;Monotouch问题还是Apple的问题?
- 有时,真实的记忆似乎在增长,没有什么可以阻止它。再说一次,GC 似乎清除了大部分。这没有真正的模式。
那么正确答案是什么?有没有一个?
编辑:我附上了两张图片。一个显示在我的应用程序生命周期中的一个阶段的内存使用情况,以及稍后的几秒钟。两个图像都反映了 UI 中同一点的内存使用情况,屏幕上只有两个控制器。也许有人仍然可以评论从这些数字中可以读出什么,尤其是神奇的“记忆标签 70”。