Allocations
Allocations用来分析静态内存分配。
Demo App
Demo是一个简单的图片应用:首页只有一个简单的入口;次级页面会读取本地图片,加滤镜,然后按照瀑布流的方式显示出来;第三个页面提供大图显示;
运行代码:点击Photos -> 进入main -> 点击一张图,进入详情页 -> Pop直到回到第一个页面,重复这段操作,从XCode的内存模块发现两个问题。
- 内存峰值过大
- 退出界面后,内存没有降低。
Statistics
菜单栏选择Product -> Profile,然后选择Allocations,运行项目,按照内存飙升的路径重复操作,采集到内存数据后停止运行。
默认看到的数据是Statistics(静态分析),点击mark 2可以更改数据分析模式。
为了更好的解决问题,有必要讲解下这里的内存相关概念:
- All Heap Allocation 堆上malloc分配的内存,不包过虚拟内存区域。
- All Anonymous VM
匿名的虚拟内存区域。何为匿名呢?就是Allocations不知道是你哪些代码创建的内存,也就是说这里的内存你无法直接控制。像memory
mapped file,CALayer back store等都会出现在这里。这里的内存有些是你需要优化的,有些不是。
表格的每一列的数据解释: