OC基础笔记——内存管理(广州黑马一期)

栈: 局部变量:定义在方法或函数内部变量
系统管理
堆:动态存储区
一般由程序猿管理

##引用计数

如果内存管理不当
1、不再使用对象没有被回收,内存泄露,最终导致程序闪退
2、正在被使用对象被释放了,野指针,访问野指针就会导致程序崩溃

ARC Automatic Reference Counting 自动引用计数
MRC Manual Reference Counting 手动引用计数

1、当一个对象刚刚出生时候,它的引用计数 1
2、当对象上引用计数是0的时候,系统立即把它回收

3、release 引用计数-1
4、retain 引用计数+1

## 多个对象的内存管理

时间: 2024-10-11 05:32:59

OC基础笔记——内存管理(广州黑马一期)的相关文章

OC基础笔记——继承(广州黑马一期)

OC中的继承机制是单继承的,一个子类只能有一个父类 OC支持多层继承的,A 继承 NSObject,B继承A这就称为多层继承 在继承体系中方法调用的顺序 1.在自己类中找 2.如果没有,去父类中找 3.如果父类中没有,就去父类的父类中 4.如果父类的父类也没有,就还往上找,直到找到基类(NSObject) 5.如果NSObject都没有就报错了 //只有继承NSObject那么这个对象才有创建对象能力//NSObject是大部分类的基类(根类 root class),/* 当 A 类 继承 B类

黑马程序员-oc对象的内存管理

oc没有java的垃圾回收机制,所以对象的内存释放很重要,基本数据类型,我们不用理会,编译器会处理: oc的每个对象内部都由一个计数器,用来记录当前有几个指针在指向该对象:当计数器为0时该对象会从内存中释放: 相关方法和概念: 1:retain:对象方法,调用该对象方法,计数器+1,有返回值,返回对象本身: 2:release:没有返回值,计数器-1: 3:retainCount:获取当前计数器的值: 4:dealloc:当对象被回收时,就会调用该方法,覆盖该方法时一定要调用[super dea

IOS阶段学习第20天笔记(OC中的内存管理)

IOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效      OC中采用引用计数器对内存做管理,他是一个整数数据,表示对象引用的次数,每个对象分配4字节      的内存空间存放引用计数器.当一个对象的引用计数器为0时 它将被自动释放,反过来说 当使用alloc.      new .copy(mutableCopy)创建新对象时,引用计数器默认为1 2)黄金法则 当使

Objective-C基础3:内存管理续

1.上篇我们讲了OC中的内存管理基础,我们再总结一下何时该用内存管理.1)当用new.alloc.copy创建对象时,必须要释放对象. 2)当拥有对象时,如果是临时对象,不需要释放:当需要长时间保留对象时,必须保留对象并且在dealloc方法中释放对象. 2.OC中的垃圾回收机制 OC2.0引入了垃圾回收机制,也就是启用了垃圾回收机制之后,我们忘记了释放对象,OC会帮我们释放对象,这点可看出OC比C++的强大之处了. 垃圾回收机制主要原理是在运行中定时动态跟踪对象,检查对象的引用技术并且进行清理

Objective-C基础2:内存管理基础

1.内存存储区域 C.C++里面.栈区:存储临时变量和对象.堆区域:存储动态分配对象.静态变量存储区:存储静态变量和常量对象. OC里面的内存存储区域跟C.C++一样. 2.为什么要进行内存管理 写过C.C++程序的都知道,内存管理永远是C++程序的一大痛点,项目当中崩溃全部来自于内存相关的操作,尤其是指针操作和内存操作,稍不注意就会产生内存访问违规造成程序崩溃.那么如何进行内存管理呢,个人认为有以下几点原则:尽量用系统提供给我们的封装对象,不要用原生的,比如用string而不要用char*,用

关于OC中得内存管理问题,alloc,retain,release,copy,dealloc

我们都知道,一个手机,它的内存是有限的,而每一个手机应用都是需要一定空间,当应用所占空间过大时,系统就会发出警告,怎样在有限的空间中,做到更高效实用美观的效果呢? 这时候就牵涉到OC中得内存管理了. 在OC这门语言中,是不存在垃圾回收机制的,但是它采用了另外一种形式或者说方法,实现这一个空间回收的效果,那就是引用计数器. 别看-引用计数器,这个名字很高大上,实际是它就是一个整数. 所以OC中分配4个字节才存储它. 引用计数的值只有两种:0和非0,我们知道,计算机其实是很笨的,结果只有这两种时,它

Linux 2.6 内核阅读笔记 内存管理

2014年7月29日 buddy分配算法 内核需要为分配一组连续的页框提供一种健壮.高效的分配策略.分配连续的页框必须解决内存管理中的外碎片(external fragmentation).频繁的请求和释放不同大小的一组连续页框,必然导致分配页框的块分算来许多小块的空闲页框无法被一次性大量分配使用. linux内核采用著名的伙伴系统算法来解决外碎片问题.该算法的核心思想是把所有的空闲页框分成11个链块表.每个链块表的大小分别为1,2,4,8,16,32,64,128,256,512和1024个连

JVM学习笔记-内存管理

第一章 内存分配 1. 内存区域. 方法区和堆(线程共享),程序计数器 , VM栈 和 本地方法栈(线程隔离). 1) java虚拟机栈:线程私有.描述的是java方法执行的内存模型:栈帧,用户存储 局部变量表,操作数栈,动态链接,方法出口等信息. 局部变量表在编译时即可完全确定!如果线程请求的栈深度大于 规定的深度,StackOverflowError. 2) 本地方法栈,类似. 3)堆:垃圾收集器管理的主要区域.线程共享. 4)方法区: 各个线程共享.存储:加载的类信息,常量,静态变量,即时

java基础---JVM内存管理以及内存运行机制学习总结

自己从网上搜资料拼接了一张JVM内存图:如下图所示: 我们思考几个问题: 1.jVM是怎么运行的? 2.JVM运行时内存是怎么分配的? 3.我们写的java代码(类,对象,方法,常量,变量等等)最终存放在哪个区? VM运行时数据区域: 1.程序计数器(program Counter Register):   是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的 方式去实 现),字节码解释器工作时就是通过改