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等都会出现在这里。这里的内存有些是你需要优化的,有些不是。
表格的每一列的数据解释:

本文详细介绍了如何使用Xcode的Allocations工具进行iOS应用的内存性能优化。通过分析Demo App的内存问题,揭示了内存峰值过大及退出界面后内存未降低的问题。文章解释了Statistics、Generation、Call Tree等关键概念,并提供了分析内存分配和泄漏的方法,最终定位到图片处理代码中的内存管理问题,建议使用正确的图像处理和释放策略以避免内存浪费。
最低0.47元/天 解锁文章
826





