OC的内存管理机制
总的来说OC有三种内存管理机制,下面将分别对这三种机制做简要的概述。
1、手动引用计数(Mannul Reference Counting-MRC)
mannul:用手的,手工的. 引用计数:retaincount
从英文字面上理解就是在这种机制下,内存需要程序员去手动管理,即通过在代码中调用-retain、-release或者-autorelease去增加和减小对象的引用计数,当引用计数为0时,对象会自动调用-dealloc方法释放所占用的内存。
2、垃圾回收机制(Garbage Collection-GC)
garbage:垃圾,废物. collection:收集,收藏.
英文还是很形象生动的吧,所谓垃圾回收机制就是系统对不再使用的对象进行收集,并在间隔一定时间后将它们集体释放。看到collection就很自然的想到这样会占用一定的系统资源,这也是它没有被部署到iOS平台的原因。而OS X也只是在一段时间内使用过它,在ARC成熟后便被废弃了。
3、自动引用计数(Automatic Reference Counting-ARC)
automatic:自动的.
这个automatic体现在什么地方呢?它和GC有什么优点使它能取代GC呢?
automatic所体现的地方在于,它和GC有着明显的不同,因为它是通过编译器实现的,即ARC程序在编译阶段编译器会根据需要自动的添加-retain和-release的调用,无需我们程序员插手。是不是很像MRC?
每当一个对象被引用时,它的引用计数就会进行+1操作,当其被release时,引用计数就会相应的-1,当减少到0时,对象会自动调用-dealloc函数进行释放,这和MRC如出一辙,因此不需要系统对其进行管理不需要的对象也能够得到及时的释放,从而也减少了内存压力。所以其取代垃圾回收机制也是理所当然的。
OC的内存管理机制的更多相关文章
- 12.Object-C--浅谈OC的内存管理机制
昨天学习了OC的内存管理机制,今天想总结一下,所以接下来我要在这里bibi一下:OC的内存管理. 首先我要说的是,内存管理的作用范围. 内存管理的作用范围: 任何继承了NSObject的对象,对其他基 ...
- OC:内存管理、dealloc方法、copy知识点
属性的声明:使⽤@property声明属性 例如:@property NSString *name: 相当于@interface中声明了两个⽅法(setter.getter): 属性的实现:使⽤@s ...
- OC的内存管理(一)
在OC中当一个APP使用的内存超过20M,则系统会向该APP发送 Memory Warning消息,收到此消息后,需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等,否则程序会 ...
- OC 内存管理机制总结
OC 内存管理机制总结 一:OC内存管理机制目前分为两块,其一自动内存管理机制,其二手动内存管理机制: 1.首先我们从自动内存管理机制讲起: 1)什么是自动内存管理机制,自动内存管理机制就是程序中所创 ...
- object-c(oc)内存管理机制详解
1.内存的创建和释放 让我们以Object-c世界中最最简单的申请内存方式展开,谈谈关于一个对象的生命周期.首先创建一个对象: 1 2 3 //“ClassName”是任何你想写的类名,比如NSStr ...
- ARC内存管理机制详解
ARC在OC里面个人感觉又是一个高大上的牛词,在前面Objective-C中的内存管理部分提到了ARC内存管理机制,ARC是Automatic Reference Counting---自动引用计数. ...
- OC的内存管理
摘自:http://blog.csdn.net/hahahacff/article/details/39839571 OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有 ...
- 黑马程序员——OC的内存管理学习小结
内存管理在Objective-C中的重要性就像指针在C语言中的重要程序一样. 虽然作为一门高级语言,但OC却没有内存回收机制.这就需要开发者来对动态内存进行管理.OC中内存管理的范围是:任何继承了NS ...
- 「OC」内存管理
一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空 ...
随机推荐
- 关于mysql的error-based injection payload
今天用sqlmap扫一个网站,想得到一个表的所有列名,注意到sqlmap用到的一个error-based payload的: 1 AND (SELECT 3174 FROM(SELECT COUNT( ...
- 【原】Comparator和Comparable的联系与区别
1.知识点了解 Comparator和Comparable都是用用来实现集合中元素的比较.排序的,所以,经常在集合外定义Comparator接口的方法和集合内实现Comparable接口的方法中实现排 ...
- Codeforces 650C Table Compression (并查集)
题意:M×N的矩阵 让你保持每行每列的大小对应关系不变,将矩阵重写,重写后的最大值最小. 思路:离散化思想+并查集,详见代码 好题! #include <iostream> #includ ...
- HDU-1255 覆盖的面积 覆盖的矩形面积并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 需要保存区间覆盖线>=2的线段的长度,根据情况来更新... //STATUS:C++_AC ...
- CM5(Cloudera Manager 5) + CDH5(Cloudera's Distribution Including Apache Hadoop 5)的安装详细文档
参考 :http://www.aboutyun.com/thread-9219-1-1.html Cloudera Manager5及CDH5在线(cloudera-manager-installer ...
- IOS学习笔记38--@class #import辨析 #include
tyle="margin:20px 0px 0px; line-height:26px; font-family:Arial"> #include 区分 #i ...
- iptables与tcpdump谁更靠近网卡
结论是tcpdump,用tcpdump抓包试试就知道了. // 将所有访问8080端口的包丢弃 iptables -A INPUT -s -j DROP // 查看iptables的策略 iptabl ...
- GridControl 选择列、复选框全选(下)
功能: 删除选中行 前台调用: string str=""; GridDelete(gv, "chk", out str); MessageBox ...
- jpcap 配置方法,问题解决,模拟sniffer程序。(附JAVA程序,jar,dll包等环境)
博文链接 http://www.cnblogs.com/xckk/p/4609444.html 一. Eclipse环境下安装与配置Jpcap 相关源程序.jpcap jar包,dll包,帮助文档 ...
- 三期_day12_其它+jetty的使用
1.大致总结 行程管理和留言反馈和前面的思路差点儿相同,这里就不多啰嗦了.经过十几天的写写停停.有了一个初步的进展了,再往下写也没有啥欲望了.还是研究下android和server,设计模式和网络这些 ...