zoukankan      html  css  js  c++  java
  • 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如出一辙,因此不需要系统对其进行管理不需要的对象也能够得到及时的释放,从而也减少了内存压力。所以其取代垃圾回收机制也是理所当然的。

  • 相关阅读:
    IntentService使用以及源码分析
    Android HandlerThread源码解析
    Android Handler消息机制源码解析
    Gradle技术之四
    Android EditText实现小数点后几位的终级方案
    Gradle系列之三 Gradle概述以及生命周期
    Gradle系列之二 Groovy对文件的操作
    Gradle系列之一 Groovy语法精讲
    Context源码分析
    用EXCLE群发outlook邮件
  • 原文地址:https://www.cnblogs.com/mmhc/p/5027914.html
Copyright © 2011-2022 走看看