移动设备的内存及其有限,每个app所占的内存是有限制的
下列行为都会增加一个app的内存占用
1,创建一个OC对象
2,定义一个变量
3,调用一个函数或者方法
当app所占用的内存比较多时,系统会发出内存警告,这时得回收一些不需要再使用的空间。比如回收一些不需要使用的对象,变量等。
如果app占用内存过大:
系统可能会强制关闭app,造成闪退现象,影响用户体验。
所谓内存管理,就是对内存进行管理,涉及的操作有:
分配内存:比如创建一个对象,会增加内存占用
清楚内存:比如销毁一个对象,能减小内存占用
内存管理的管理范围
1,任何继承NSObject对象
2,对其他非对象类型无效(int,char,float,double,struct,enum等)
只有OC对象才需要进行内存管理的本质原因:
1,OC对象存放于堆里面。(里面内存动态回收的)
2,非OC对象一般放在栈里面(栈内存会被系统自动回收)
Car *car = [[Car alloc]init];
car为指针变量 再栈区,[Car alloc] 分配内存空间,在堆区分配空间
系统是如何判断什么时候需要回收一个对象所占用的内存?
根据对象的引用计数器。
什么是引用计数器?
每个OC对象都有自己的引用计数器。它是一个整数。
从字面上,可以理解为“对象被引用的次数”,也可以理解为:它表示有多少人正在用这个对象。
每个OC对象内部都有4个字节的存储空间来存放引用计数器。
时间: 2024-11-03 22:48:28