码迷,mamicode.com
首页 > 其他好文 > 详细

第九讲.内存管理初级.(内存管理的方式,引用计数机制及影响计数的各个方法,dealloc方法,内存管理的基本原则,掌握copy的实现)

时间:2015-09-01 18:26:55      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

一.内存管理的方式.
  1.进行内存管理的原因: 
       1>.由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等。
      管理范围:任何继承NSObject的对象,对其他的基本数据类型无效。
       2>.本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对象已经没有指针指向,但依然存在于内存中,造成内存泄露。
    2. 内存常见问题体现在两个方面:内存溢出,野指针异常.
      内存溢出:ios给每个应用程序提供了一定的内存,用于程序的运行.一旦超出内存上限,程序就会Crash.(iphone3GS内存30M左右,iphone 5S 内存80M左右.程序中占内存最大的就是图片和音频等资源文件)
      野指针问题:对象内存空间已经被系统回收,仍然使用指针操作这块内存.野指针异常是程序Crash的主要原因.代码量越大的程序,越不容易找出野指针的位置.
         3.内存管理的方式
    垃圾回收(Garbage Collector垃圾收集器 简称gc):程序员只需要开辟内存空间,不需要用代码显示的释放,系统来判断哪些空间不再被使用,并回收这些内存空间,以便再次分配.整个过程不需要代码,系统自动回收.java开发中一直使用的就是垃圾回收技术.
   MRC(人工引用计数 Manual Reference Count):内存的开辟和释放都由程序代码进行控制.相对垃圾回收来说,对内存的控制更加灵活,可以在需要释放的时候及时释放对程序员的要求较高,程序员要熟悉内存管理的机制.
   ARC(自动引用计数 Auto Reference Count):ios5.0的编译器特征,它允许用户开辟空间,不用释放空间.它不是垃圾回收!它的本质还是MRC,只是编译器帮助程序员默认加了释放的代码.
      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
二.引用计数机制,影响计数的各个方法.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
三.dealloc方法
 
 
 
 
 
 
 
 
 
 
 
 
 
 
四.内存管理的原则.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
五.掌握copy的实现
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

第九讲.内存管理初级.(内存管理的方式,引用计数机制及影响计数的各个方法,dealloc方法,内存管理的基本原则,掌握copy的实现)

标签:

原文地址:http://www.cnblogs.com/erdeng/p/4776438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!