QF——OC内存管理详解
2024-10-18 19:27:39
堆的内存管理:
我们所说的内存管理,其实就是堆的内存管理。因为栈的内存会自动回收,堆的内存需要我们手动回收。
栈中一般存储的是基本数据类型变量和指向对象的指针(对象的引用),而真实的对象存储在堆中。因为栈结构的缘故,它是严格地存储在栈数据结构中的,其中数据的生命周期结束后内存都会被回收。此时,对象的引用已经被回收了,但是对象还存在于堆中,这便造成了内存泄露。
引用计数器:(ratainCount)
每个对象都有引用计数器,在每个对象内部都有块内存存储它。顾名思义,引用计数器代表该对象被引用的次数,即有多少地方在使用该对象。
当一个对象刚被创建时,引用计数器为1;每多一个引用,引用计数器就+1 (retain);每少一个引用,引用计数器就 -1(release)。
经过一番增减后,当引用计数器等于0时,该对象就被销毁,所占内存被回收。(自动调用dealloc方法,一般需重写它,在里面释放一些资源。)
注意:retainCount=0是判断对象是否该销毁的唯一依据
对象被销毁后,就不能再访问它了,不然会报野指针错误。
内存管理的原则:
有创建就有销毁,谁创建谁销毁;有retain就有release,谁retain就谁release。
待续。。。
有几篇博客总结得很详细:
最新文章
- AngularJS Resource:与 RESTful API 交互
- redis事务
- PHP内置函数file_put_content(),将数据写入文件,使用FILE_APPEND 参数进行内容追加
- Vmware Vsphere WebService SDK开发(第一讲)-基本知识学习
- 如何通过Socket TCP发送并接收一个文件?
- Intent详解
- 垂直的TextView
- Android 颜色渲染(六) RadialGradient 环形渲染
- postgresql的psql命令
- 视听说加速器--AHK辅助工具
- GString及IntelliJIdea中调试Groovy的操作步骤
- thinkphp使用自带webserver
- Android简易实战教程--第八话《短信备份~一》
- 深入解析ThreadLocal 详解、实现原理、使用场景方法以及内存泄漏防范 多线程中篇(十七)
- P5300 [GXOI/GZOI2019]与或和
- Android Stdio 无法打开模拟器
- Java虚拟机学习-Java内存区域(一)
- Xamarin Essentials应用教程文件系统FileSystem
- awk、sed、grep三大shell文本处理工具之sed的应用
- Linux SSH 免秘钥登录
热门文章
- UIPageViewController-浅析
- Js特效总结
- javascript模式——Mixin
- SQL Server 已提交读快照 测试
- IntPtr问题
- python基础之 Python os._exit() sys.exit() exit()区别
- 解决Qt4.8.6+VS2010运行程序提示 FTH: (6512): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes
- Unix下C程序内存泄露检测工具:valgrind的安装使用
- sulime运行 java 和 php
- Jquery实现图片切换效果(IE,FF,Goole)都可以正常运行