iOS 性能优化 - Allocations分析内存分配

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Allocations

Allocations用来分析静态内存分配。

Demo项目

Demo App

Demo是一个简单的图片应用:首页只有一个简单的入口;次级页面会读取本地图片,加滤镜,然后按照瀑布流的方式显示出来;第三个页面提供大图显示;

运行代码:点击Photos -> 进入main -> 点击一张图,进入详情页 -> Pop直到回到第一个页面,重复这段操作,从XCode的内存模块发现两个问题。

  1. 内存峰值过大
  2. 退出界面后,内存没有降低。

Statistics

菜单栏选择Product -> Profile,然后选择Allocations,运行项目,按照内存飙升的路径重复操作,采集到内存数据后停止运行。

默认看到的数据是Statistics(静态分析),点击mark 2可以更改数据分析模式。

为了更好的解决问题,有必要讲解下这里的内存相关概念:

  • All Heap Allocation 堆上malloc分配的内存,不包过虚拟内存区域。
  • All Anonymous VM 匿名的虚拟内存区域。何为匿名呢?就是Allocations不知道是你哪些代码创建的内存,也就是说这里的内存你无法直接控制。像memory mapped file,CALayer back store等都会出现在这里。这里的内存有些是你需要优化的,有些不是。

表格的每一列的数据解释:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值