zoukankan      html  css  js  c++  java
  • QF——OC内存管理详解

    堆的内存管理:

      我们所说的内存管理,其实就是堆的内存管理。因为栈的内存会自动回收,堆的内存需要我们手动回收。

      栈中一般存储的是基本数据类型变量指向对象的指针(对象的引用),而真实的对象存储在堆中。因为栈结构的缘故,它是严格地存储在栈数据结构中的,其中数据的生命周期结束后内存都会被回收。此时,对象的引用已经被回收了,但是对象还存在于堆中,这便造成了内存泄露

    引用计数器:(ratainCount)

      每个对象都有引用计数器,在每个对象内部都有块内存存储它。顾名思义,引用计数器代表该对象被引用的次数,即有多少地方在使用该对象。

      当一个对象刚被创建时,引用计数器为1;每多一个引用,引用计数器就+1 (retain);每少一个引用,引用计数器就 -1(release)。

      经过一番增减后,当引用计数器等于0时,该对象就被销毁,所占内存被回收。(自动调用dealloc方法,一般需重写它,在里面释放一些资源。)

      注意:retainCount=0是判断对象是否该销毁的唯一依据

      对象被销毁后,就不能再访问它了,不然会报野指针错误。

    内存管理的原则:

      有创建就有销毁,谁创建谁销毁;有retain就有release,谁retain就谁release。

    待续。。。

    有几篇博客总结得很详细:

      

      OC内存管理

      OC中栈和堆

      堆内存碎片问题

  • 相关阅读:
    nginx限速 原理
    规则引擎 图形界面
    阿里巴巴 规则引擎
    martinfowler Data Guide big data bad things
    Nginx Request URI too large
    linux2.6.30.4内核移植(1)
    根文件系统
    Linux内核配置:定制配置选项
    Linux内核配置:Kconfig
    Linux内核配置:Makefile目标
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4322101.html
Copyright © 2011-2022 走看看