iOS基础 - 内存分析
一、内存的重要性
程序是否可用的最根本的制约因素。
十分影响用户体验。
程序的crash有很多情况都是内存的原因。
二、iOS平台内存警告机制
iOS系统不支持虚拟内存,一旦出现内存不足的情况,iOS系统会通知所有app,无论是前台的还是挂起的,都会收到memory warning的通知,一旦app收到memory warning的通知就应该回收占用内存较大的对象。
内存警告测试方法:iOS模拟器->硬件->模拟内存警告。
iOS6废除了viewDidUnload函数,所以要把之前viewDidUnload中做的事情放在didReceiveMemoryWarning中
三、静态分析工具——Analyze
Analyze是一个编译和分析工具,可以发现编译中的warning,内存泄露隐患,有时还可以查处逻辑上的问题。
内存泄露隐患提示:
Potential Leak of an object allocated on line ……
数据赋值隐患提示:
The left operand of …… is a garbage value;
对象引用隐患提示:
Reference-Counted object is used after it is released;
Analyze发现的问题值得我们注意,但它只是提出隐患,并不一定就存在问题。
Analyze运行方法:Product->Analyze,或者长按运行按钮,选择Analyze。
四、动态分析工具——Instrument
启动instrument:Xcode->product->profile,选择相应的工具,点击profile按钮。
显示所有instrument工具:window->library.下面的按钮是调整显示方式,搜索栏是搜素某一工具。上面可以按某一功能选择工具。还可以按自己的方式组织instrument工具。我们这里只介绍和内存相关的Allocations和leaks
Allocations:跟踪内存分配的工具
Category:通常是一个Core Foundation对象、OC类等。
Live Bytes:当前活动内存大小。
#Living:存在的对象个数。
#Transient:已经销毁的对象个数。
Overall Bytes:所开辟的所有内存。
#Overall:所创造出来的所有对象个数。
#Allocations(Net/Overall)当前和全部的比值。
Leaks:跟踪内存泄露的工具
最新文章
- 给MySQL增加mysql-udf-http和mysql-udf-json自定义函数,让MySQL有调用http接口和查询直接回JSON的能力
- Memcached 数据缓存系统
- php for循环建数据
- 解决SQLSERVER在还原数据时出现的“FILESTREAM功能被禁用”问题
- C++11 并发指南系列
- win10 + VS2015 + EF6 + MySQL
- (二)list或set的遍历
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
- ecshop调用指定分类和个数的文章列表
- 软件工程(GZSD2015)第三次作业提交进度
- UVA-818 dfs + 位运算
- 八.django模型系统(二)之常用查询及表关系的实现
- 二.django项目环境搭建
- bootstrap-editable实现bootstrap-table行内编辑
- Python3简单爬虫抓取网页图片
- Hierarchical query-层次查询之START WITH CONNECT BY用法
- 忘记webogic管理控制台密码
- zabbix系列之三——安装报错
- 清除右键菜单CMD入口
- 关于maven依赖中的<;scope>;provided<;/scope>;使用
热门文章
- osx launchpad删除图标
- C++内存分配和拷贝构造函数写研究
- Struts1——离BeanUtils看struts其原理1
- linux_shell_类似sql的orderby 取最大值
- css优先级计算规则
- Swift构造函数(Initializer)和析构函数(Deinitializer)
- c/c++ 基金会(七) 功能覆盖,虚函数,纯虚函数控制
- 网页动态切换母版页(MasterPage)
- C# ---- 串口数据YSI实例
- Android DES AES MD5加密