89,内存管理(一)
2015-12-14 14:11
204 查看
#import <Foundation/Foundation.h>
/*
1,内存管理的重要性
>移动设备的内存极其有限,每一个app所能占用的内存是有限的
>下面的行为都会增加一个app的内存占用
-创建一个OC对象
-定义一个变量
-调用一个函数或方法
>当app所占用的内存较多的时候,系统会发出内存警告,这时得回收一些内存空间。
比如,一些不需要使用的对象,变量等
>如果app占用内存过大,系统可能会强制关闭app,造成闪退现象,影响用户体验
2,内存管理
>如何回收哪些不需要再使用的对象
-学OC的内存管
>内存管理的操作有:
-分配内存:创建对象,变量,使用方法
-清除内存:销毁对象,变量
>内存管理的管理范围
-任何继承了NSObject的对象
-对其他非对象类型无效(int,char,float,double,struct,enum等)
>只有OC对象才需要进行内存管理的本质原因
-OC对象存储在堆里面,需要程序员手动编码释放。若OC对象没有手动释放,只能等到程序关闭时,OC对象才被系统释放
-非OC对象一般存储在栈里面,栈内存会被操作系统自动回收
*/
@interface Car : NSObject
@end
@implementation Car
@end
int main(int argc,const
char * argv[]) {
@autoreleasepool {
int a = 10;
int b = 20;
//c存在栈里面的,Car对象是对象,存在堆里面,计数器=1
Car *c = [[Caralloc]
init];
}
//经过上一行代码后,栈里面的变量 a,b,c都被回收
//而存在堆里面的Car对象还会留在内存中,因为它的计数器=1
return 0;
}
/*
1,内存管理的重要性
>移动设备的内存极其有限,每一个app所能占用的内存是有限的
>下面的行为都会增加一个app的内存占用
-创建一个OC对象
-定义一个变量
-调用一个函数或方法
>当app所占用的内存较多的时候,系统会发出内存警告,这时得回收一些内存空间。
比如,一些不需要使用的对象,变量等
>如果app占用内存过大,系统可能会强制关闭app,造成闪退现象,影响用户体验
2,内存管理
>如何回收哪些不需要再使用的对象
-学OC的内存管
>内存管理的操作有:
-分配内存:创建对象,变量,使用方法
-清除内存:销毁对象,变量
>内存管理的管理范围
-任何继承了NSObject的对象
-对其他非对象类型无效(int,char,float,double,struct,enum等)
>只有OC对象才需要进行内存管理的本质原因
-OC对象存储在堆里面,需要程序员手动编码释放。若OC对象没有手动释放,只能等到程序关闭时,OC对象才被系统释放
-非OC对象一般存储在栈里面,栈内存会被操作系统自动回收
*/
@interface Car : NSObject
@end
@implementation Car
@end
int main(int argc,const
char * argv[]) {
@autoreleasepool {
int a = 10;
int b = 20;
//c存在栈里面的,Car对象是对象,存在堆里面,计数器=1
Car *c = [[Caralloc]
init];
}
//经过上一行代码后,栈里面的变量 a,b,c都被回收
//而存在堆里面的Car对象还会留在内存中,因为它的计数器=1
return 0;
}
相关文章推荐
- 发送http包命令---curl
- java中static{}语句块详解
- 经验之谈—没有尺寸的父控件
- 番茄工作法的学习
- Java查询大文本
- luci编译错误
- unity, access scene ambient
- det--求矩阵的行列式
- 顶点坐标与纹理坐标分分钟看懂
- 本地库同步远程库的简易步骤
- Centos Linux下流媒体服务器Helix配置
- JavaScript核心知识点总结
- mongodb使用
- JVM内存静态与动态分配
- NSString的小结
- Redis的hash数据类型及其应用场景解析---购物车
- CCD摄像头视场角计算公式
- 安卓listview两个类型条目的复用,总是报数组越界Android listview ArrayIndexOutOfBoundsException问题
- 分布式TCP压力测试工具 tcpcopy
- 孔雀翎----《Programming C# 》中国版 文章4版