堆的内存管理:

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

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

引用计数器:(ratainCount)

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

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

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

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

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

内存管理的原则:

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

待续。。。

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

  

  OC内存管理

  OC中栈和堆

  堆内存碎片问题

最新文章

  1. AngularJS Resource:与 RESTful API 交互
  2. redis事务
  3. PHP内置函数file_put_content(),将数据写入文件,使用FILE_APPEND 参数进行内容追加
  4. Vmware Vsphere WebService SDK开发(第一讲)-基本知识学习
  5. 如何通过Socket TCP发送并接收一个文件?
  6. Intent详解
  7. 垂直的TextView
  8. Android 颜色渲染(六) RadialGradient 环形渲染
  9. postgresql的psql命令
  10. 视听说加速器--AHK辅助工具
  11. GString及IntelliJIdea中调试Groovy的操作步骤
  12. thinkphp使用自带webserver
  13. Android简易实战教程--第八话《短信备份~一》
  14. 深入解析ThreadLocal 详解、实现原理、使用场景方法以及内存泄漏防范 多线程中篇(十七)
  15. P5300 [GXOI/GZOI2019]与或和
  16. Android Stdio 无法打开模拟器
  17. Java虚拟机学习-Java内存区域(一)
  18. Xamarin Essentials应用教程文件系统FileSystem
  19. awk、sed、grep三大shell文本处理工具之sed的应用
  20. Linux SSH 免秘钥登录

热门文章

  1. UIPageViewController-浅析
  2. Js特效总结
  3. javascript模式——Mixin
  4. SQL Server 已提交读快照 测试
  5. IntPtr问题
  6. python基础之 Python os._exit() sys.exit() exit()区别
  7. 解决Qt4.8.6+VS2010运行程序提示 FTH: (6512): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes
  8. Unix下C程序内存泄露检测工具:valgrind的安装使用
  9. sulime运行 java 和 php
  10. Jquery实现图片切换效果(IE,FF,Goole)都可以正常运行