内存管理

原创 2015年07月09日 17:32:47

 内存管理的对象:OC中的对象,对基本类型无用

 OC中采用引用计数器对内存管理

 OC中每个对象都有一个引用计数器,是一个整数,表示对象被引用的次数(有多少个人在使用它)

 每个对象会分配4字节的存储空间存引用计数器

 当采用allocnewcopy(mutableCopy)构造一个新对象时,新对象的引用计数器值为1.

 当引用计数器值为0时,这个对象所占的内存就会被释放(也就是说,只要这个对象的引用计数器值不为0,它所占的空间永远不会被释放,除非整个程序退出)

 当给对象发送retain消息,引用计数器值+1

 当给对象发送release消息,引用计数器值-1

 给对象发送retainCount消息,可以获取引用计数器值

 当一个对象的引用计数器值为0时,这个对象所占的空间就会被释放

 当对象被释放时,就会给它发送dealloc消息。不能手动调用,系统自动调用

 一般会重写dealloc方法,重写时,一定要调用[super dealloc];一般放在最后

 引用技术:

 ARCautomatic references counting

 MRC: manual references counting

 黄金法则:

 1、当采用allocnewcopy(mutableCopy)构造一个新对象时,新对象的引用计数器值为1.

 2、如果想要拥有某个对象,需要给它发送retain消息

 3、如果不想使用某个对象,需要给它发送release或者autorelease消息

 4、谁allocnewcopy了,谁需要release

 5、谁retain,谁release


过度释放,不能再次释放已经释放的空间,p是一个野指针(指向一个已经被释放的内存空间,空间不可用)

nil发送消息,不能给野指针发送消息


Linux内存管理浅析(一)

1.Linux内存管理的主要内容 a.      虚拟内存管理 b.      内核空间内存管理 c.      用户空间内存管理 2.虚拟内存和物理内存映射 ZONE_HIGH...
  • u012398362
  • u012398362
  • 2016年11月27日 19:40
  • 970

Ruby的内存管理机制。

原文在此 http://www.theirishpenguin.com/2009/10/29/understanding-how-ruby-stores-objects-in-memory-the-r...
  • ChenShaoXunHuan
  • ChenShaoXunHuan
  • 2015年03月03日 11:20
  • 1337

Lua内存管理

Lua  要求用户给出一个内存管理函数,在 Lua创建虚拟机的时候传入。。  它利用 C 标准库中的函数实现了一个默认的内存管理器,这也可以帮助我们理解这个内存管理...
  • liutianshx2012
  • liutianshx2012
  • 2015年01月19日 17:00
  • 1351

C/C++内存管理之内存池

C++内存管理一直是我比较困惑的问题。俗话说初生牛犊不怕虎,做点啥都new一个,然后delete一个。根本不知道底层会有怎么样的运行机制,慢慢地学习才知道以前学习中有一些东西是不可能在工业中应用的。所...
  • bateerBATEER
  • bateerBATEER
  • 2017年03月28日 21:38
  • 313

深入浅出Linux内核内存管理基础

1 背景知识 1.1 用户空间与内核空间内存的划分        从Linux操作系统层次上,内存可划分为用户空间内存和内核空间内存。        32位的CPU,最大寻址范围为2^32 - 1也就...
  • acs713
  • acs713
  • 2015年01月18日 16:45
  • 4178

Linux内存管理详解

前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。 ...
  • u010229420
  • u010229420
  • 2016年09月19日 21:29
  • 628

ucos内存管理

为了消除碎片,ucosii连续的打开内存按分区来管理,每个分区包含有整数个大小相同的内存块 类似每个人物对应一个人物块,每个时间对应一个事件块,ucosii每个内存块也是对应一个内存块,内存控制块是一...
  • nanjoh
  • nanjoh
  • 2017年01月12日 17:16
  • 298

Unity动态加载和内存管理(三合一)。。。好强悍。。。

原址:http://game.ceeger.com/forum/read.php?tid=4394#info 最近一直在和这些内容纠缠,把心得和大家共享一下: Unit...
  • ldghd
  • ldghd
  • 2012年10月14日 12:46
  • 11831

iOS 内存管理基本原则

我们知道objc中创建对象是存放在堆中的(基本数据类型除外,是由系统自己管理,并存放在栈中),系统不会自动释放堆中的内存。如果创建完的对象存放在堆中后并使用完没有得到及时的释放,会占用的内存。但是ob...
  • aaaa99996666
  • aaaa99996666
  • 2016年05月07日 19:33
  • 1729

内存管理——Xcode升级到8.0之后内存管理需要注意的事项

今天回顾复习一下内存管理的知识点,发现了一个不可思议的问题,拿出来和大家一起分享。 在之前我们总是认为是这样的: 引用计数的工作原理: 1.当我们创建(alloc)一个新对象A的时候,它的引用计...
  • moqj_123
  • moqj_123
  • 2017年07月16日 11:31
  • 340
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内存管理
举报原因:
原因补充:

(最多只允许输入30个字)