我正在为iOS Instrumentation使用Allocations Profiling模板。 我创建了一个UIView类的扩展,它为未添加到视图层次结构的视图获取快照。我想仔细检查我的新方法消耗了多少内存。 我发现我的新方法从堆中分配288字节,如下图所示。
然后我导航到相应的方法,我发现有一个很大的内存量,如预期的那样。看看下面的图片。
我的问题是:
请注意,我不是在询问为视图拍摄快照的最佳方法。我已熟悉Apple method snapshotView。我正在做这个练习只是为了测试我对iOS中内存使用的理解。
答案 0 :(得分:3)
有几点想法:
过滤调用树的结果时要小心。您可能会意外地删除了探查器与内存关联的例程。尝试(a)选择具有相关分配的图表范围(以减少结果中的噪声量); (b)删除过滤器,然后(c)在你看到大内存跳转的那一点展开树:
就个人而言,我经常发现翻转调用树和隐藏系统库更容易:
或者,您也可以转到“分配”的“统计”并查找大分配:
然后您可以深入研究:
然后点击右侧的“扩展详细信息”面板,跳转到相关代码:
如果需要,在Xcode 8中查找分配的另一种方法是打开方案中的“Malloc Stack”选项,然后使用中概述的“Debug Memory Graph”选项。
例如,我使用了“调试内存图”,找到了CG光栅数据,我可以看到这个10mb图像的对象图,并且可以看到在“扩展细节”中分配的堆栈右边的小组: