一、内存的重要性

程序是否可用的最根本的制约因素。

十分影响用户体验。

程序的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:跟踪内存泄露的工具

最新文章

  1. 给MySQL增加mysql-udf-http和mysql-udf-json自定义函数,让MySQL有调用http接口和查询直接回JSON的能力
  2. Memcached 数据缓存系统
  3. php for循环建数据
  4. 解决SQLSERVER在还原数据时出现的“FILESTREAM功能被禁用”问题
  5. C++11 并发指南系列
  6. win10 + VS2015 + EF6 + MySQL
  7. (二)list或set的遍历
  8. 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
  9. ecshop调用指定分类和个数的文章列表
  10. 软件工程(GZSD2015)第三次作业提交进度
  11. UVA-818 dfs + 位运算
  12. 八.django模型系统(二)之常用查询及表关系的实现
  13. 二.django项目环境搭建
  14. bootstrap-editable实现bootstrap-table行内编辑
  15. Python3简单爬虫抓取网页图片
  16. Hierarchical query-层次查询之START WITH CONNECT BY用法
  17. 忘记webogic管理控制台密码
  18. zabbix系列之三——安装报错
  19. 清除右键菜单CMD入口
  20. 关于maven依赖中的<scope>provided</scope>使用

热门文章

  1. osx launchpad删除图标
  2. C++内存分配和拷贝构造函数写研究
  3. Struts1——离BeanUtils看struts其原理1
  4. linux_shell_类似sql的orderby 取最大值
  5. css优先级计算规则
  6. Swift构造函数(Initializer)和析构函数(Deinitializer)
  7. c/c++ 基金会(七) 功能覆盖,虚函数,纯虚函数控制
  8. 网页动态切换母版页(MasterPage)
  9. C# ---- 串口数据YSI实例
  10. Android DES AES MD5加密