十.oc内存管理
引用百度百科图
栈(stack)又名堆栈。
栈定义:栈是限定仅在表头进行插入和删除操作的线性表(有序)。(又称:后进先出表)
(动态)数据展示存储的地方。(举例:升降电梯)特点:先进后出(FILO—First-In/Last-Out)
位置:处于内存条的最高地址。栈顶即最低地址,允许进行插入和删除操作的一端称为(最低地址)栈顶(top),另一端为(最高地址)栈底(bottom);
栈底固定,而栈顶浮动。注意静态变量是不入栈。
堆(heap)在这里的定义:堆是紧随在栈表头后进行插入和删除操作的线性表。又称:先进先出表)
(包含了大量无序的活动对象,需要通过指针来保存这些对象在堆中的地址。)
堆,(举例:银行排队)特点:队列优先,先进先出(FIFO—first in first out)
位置:处于内存条的最高地址栈的后面。
堆和栈的区别:(引用南霸天mxw 中学数学教师 白银市第一中学教师2015-06-04 15:10 由科学教育分类达人 程明认证)
一、堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
二、堆栈缓存方式区别:
1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
三、堆栈数据结构区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
正文:
一、基本原理
1.内存
管理范围:任何继承NSObject的对象,对其他的基本数据类型无效。
2.对象的基本结构
对象内部,有4个字节的存储空间来存储引用计数器。
3.引用计数器的作用
判断对象回收唯一依据是计数器是否为0,若为0则回收。
4.操作
发送消息,相应的计数器操作。
Retain:计数器+1,返回本身
Release:计数器-1(并不代表释放对象)
retainCount:获得当前计数器值
5.对象的销毁
当计数器为0,它被销毁,内存回收。
当对象被销毁,系统会发送一条dealloc,重写dealloc方法,释放资源。重写dealloc必须用[super dealloc],放在代码块最后调用(不能直接调用dealloc)。
对象被回收,占据的存储空间就不可用,坚持使用程序崩溃(野指针错误)。
十.oc内存管理的更多相关文章
- OC内存管理-OC笔记
内存管理细节:http://blog.sina.com.cn/s/blog_814ecfa90102vus2.html 学习目标 1.[理解]内存管理 2.[掌握]第一个MRC程序 3.[掌握]内存管 ...
- OC 内存管理机制总结
OC 内存管理机制总结 一:OC内存管理机制目前分为两块,其一自动内存管理机制,其二手动内存管理机制: 1.首先我们从自动内存管理机制讲起: 1)什么是自动内存管理机制,自动内存管理机制就是程序中所创 ...
- OC内存管理基础
OC 内存管理基础 一. retain和release基本使用 使用注意: 1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作) 2.你不想再使用(占用)某个对象,就 ...
- QF——OC内存管理详解
堆的内存管理: 我们所说的内存管理,其实就是堆的内存管理.因为栈的内存会自动回收,堆的内存需要我们手动回收. 栈中一般存储的是基本数据类型变量和指向对象的指针(对象的引用),而真实的对象存储在堆中.因 ...
- OC内存管理-黄金法则
1.内存管理-黄金法则 The basic rule to apply is everything that increases the reference counter with alloc, [ ...
- OC内存管理总结,清晰明了!
<span style="font-size:18px;">OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限.所以每一个APP所占的 ...
- 31 (OC)* 内存管理
31 (OC) 内存管理 一:内存管理黄金法则. 如果对一个对象使用了alloc.[Mutable]copy,retain,那么你必须使用相应的realease或者autorelease 二:内存管 ...
- iOS学习17之OC内存管理
1.内存管理的方式 1> iOS应用程序出现Crash(闪退),90%的原因是因为内存问题. 2> 内存问题 野指针异常:访问没有所有权的内存,如果想要安全的访问,必须确保空间还在 内存泄 ...
- 【0 - 1】OC内存管理
一.内存管理概述 垃圾回收机制(GC):由系统管理内存,程序员不需要管理. OC中的垃圾回收:在OC2.0版加入垃圾回收. OC与iOS:OC有垃圾回收机制,但是iOS屏蔽了这个功能.原因:iOS运行 ...
随机推荐
- 在 Hibernate 中出现 database product name cannot be null 时怎么解决?
今 天在做一个SH项目结合的时候忽然出现了,这样的错误,我开始也不知道怎么办,便上网查,看一些高手回答都是说,检查 hibernate.cfg.xml 这个配置文件,或是一些其它的配置,于是我便看了一 ...
- openlayers优化项
做了一个简单的样式,但是做的不怎么样:希望和大家讨论下载动态图那里,怎么能够提高效率,提高数据,能够快速反应:一般的处理方法是什么?
- git 查看远程分支、本地分支、删除本地分支【转】
1 查看远程分支 $ git branch -a * br-2.1.2.2 master remotes/origin/HEAD -> origin/master remotes/origin/ ...
- TFS 2010 迁移/重装/还原 步骤
1.签入所有代码 2.停止TFS服务:运行命令行,并将路径切换到TFS安装路径:C:\Program Files\Microsoft Team Foundation Server 2010\Tools ...
- 关于checkbox全选与反选的问题
在一组checkbox中常有这样的需求,选择全选按钮,所有的选项必须全选上,当再次点击时,则所有的按钮必须反选,当点击一组checkbox时,只有有一个不选上,则按钮不选中,当所有的按钮全部选上时,此 ...
- 移动端自动化环境搭建-wxpython的安装
安装wxpython A.安装依赖 wxPython 是 Python 非常有名的一个 GUI 库,因为 RIDE 是基于这个库开发的,所以这个必须安装. B.安装过程 下载地址:http://www ...
- 给VMware下的Linux扩展磁盘空间(以CentOS6.5为例)
#查看挂载点:df -h#显示: 文件系统 容量 已用 可用 已用%% 挂载点/dev/mapper/vg_dc01-lv_root47G 12G 34G 25% /tmpfs 504M 88K 50 ...
- Git 操作本地分支与远程分支
1 查看本地分支 git branch 2 查看远程分支 git branch -a 3 新建远程分支 git checkout -b developr git push origin develop ...
- Myeclispe 安装 SVN :
Myeclispe 安装 SVN :解压 : site-1.8.22.zip 放入如下路径下即可 :
- Nginx反爬虫
原文地址:http://abublog.com/nginx_agent_deny.html 进入到nginx安装目录下的conf目录,将如下代码保存为 agent_deny.conf # cd /us ...