内存管理

一、为何进行内存管理app

  提升手机流畅度函数

  在程序开发中,应该及时将不用的数据回收,合理分配和管理内存,以提升程序的运行效率ui

规定运行起来的程序所占用的内存不得超过20m指针

一旦超过 就会发送警告 ,若是app接到警告尚未进行处理的话,程序会闪退对象

大部分闪退的缘由都是由于内存没有管理好继承

每一个界面占用内存累计增长内存占用量内存

 

二、哪些行为增长内存占用开发

  1)建立对象get

  2)定义变量内存管理

  3)调用函数或者方法

 

  堆区,栈区,常量区,代码区...

  可以看到和控制的区域:堆区和栈区

 

三、OC内存管理的范围

  管理任何继承自ONSObject的对象,对其它的基本数据类型无效

对象类型是程序运行过程当中动态分配的,存储在堆区内存管理主要是 对堆区的对象的内存管理

 

1、内存管理的原理及分类

一、内存管理的原理

  搞清楚两个概念:

  1)对象的全部权

  任何一个对象,均可能有一个或多个全部者

  如:person *p=[Person new];

  p就是对象的全部者

  Person *p1=p

  p1是p的全部者是对象的全部者

 

  任何本身建立的对象都归本身全部

  new/alloc/copy的方法建立对象,可使用retain来得到一个对象的全部权

 

  2)引用计数器

  对象刚被建立时,默认计数值为1,当计数器的值变为0的时候,对象被销毁

  (经过retainCount方法能够打印对象引用计数器的值)

 

  MRC:手动内存管理

  ARC:默认环境为ARC:automatic Reference count 自动引用计数器

  怎么配置成MRC形式?

  target->Build Setting  automatic reference Counting (YES/NO)

  a、引用计数器做用:

  判断对象要不要被回收的依据

  b、对引用计数器的操做

  想要管理对象占用的内存,就要学会操做引用计数器

  1)常见操做:

    a、retain消息:计数器+1

    b、release消息:计数器-1

        原则:谁retain谁release

 

二、内存管理

  一、野指针(僵尸对象):

  僵尸对象:已经被销毁的对象

  野指针:指向僵尸对象(不可用内存)的指针

  空指针:没有指向存储空间的指针(里面村的是nil也就是-)

  

  二、内存泄漏

  若是在程序结束后,对象没有被释放,则成为内存泄漏

相关文章
相关标签/搜索