iOS开发内存管理之番外篇

内存管理, 一个恒古的话题, 它不是一个简单的问题. 比如说我们会遇到的一些, 内存莫名的持续增长, 程序莫名的crash, 以及难以发现的内存泄露等等问题, 都是比较让人揪心的. 但是, 只要咱们理解了内存管理的原则, 完全遵照, 其实, 内存管理也是很好解决的.

内存管理现在大致可以分为两类, 一类是从始至终存在的MRC, 一类是Xcode4.2及以上版本有了的自动管理内存, 也就是ARC. 关于MRC和ARC选择哪一个, @唐巧 的<是否应该使用ARC?>文章已经有了很详细的探讨. 

内存管理, What? Why? How? 这都不是本文讨论的内容, 因为已经有很多非常好的文章来解释这些问题了, 本文将从另外一个角度出发, 教给大家如何调试-解决内存中的问题. 关于What-Why-How本文也会分享一些比较好的文章, 对于不理解内存管理的同学会有很大的帮助.

一. 开启"僵尸模式” �� �� (环境变量)

通常情况下,一旦内存中的对象被释放,其只能就此消失。但当“僵尸”方案启动时,该对象只会被标记为“释放”但却仍然被保留在内存当中。如此一来,当我们访问某个僵尸对象时,Xcode会提醒我们该对象虽然能够被访问、但在实际环境中已经不应存在。在这种模式下,我们将能够了解到正常情况下无法获得的实时状态与对象位置。

Zombie环境变量对于处理EXC_BAD_ACCESS类型崩溃很有效。 当这个zombie工具被启用之后,即使这个对象被释放了,这个对象的内存也不会被清理。这个工具将永远不会释放内存,只是简单标记一下这个内存是不死的(“僵尸"的来历),你最终将会在某个时候耗尽所有的内存。

开启"僵尸模式”的步骤:


依次选择


勾选上红色区域, 这样就开启了"僵尸模式”.

二. 静态分析器 (command + shift + B)

1. 第一种方法, 直接快捷键, 点击左边导航栏中的警告栏

2. 第二种方法, 按下图以此点击


ps...这个方法有的时候不是特别靠谱, 看情况的啊, 哈哈~

三. Instruments 工具

Instruments工具可谓是神兵利器了, 功能很强大, 可谓是咱们每个程序员"居家过日子的好帮手”. 以下主要讲解利用Instruments调试内存泄露和循环引用的问题.

1. 打开Instruments


很简单两步, 然后就会看到它的主界面


选择leaks --> 点击左上角的大红点 --> 这个时候就开始检测了 ( 这个时候模拟器也会运行起来, 切记一定在模拟器中对你的当前程序进行操作, 以便检测 ) --> 等待检测结束..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值