iOS---内存分析

内存分析

1.静态内存分析(Analyze)

优点:分析内存非常快,已经可以对整个项目的内存就行分析
缺点:不运行程序,直接对代码进行分析.根据代码的上下文的语法结构,看语法是否有问题.(不够准确,但是如果通过静态内存分析,有提示出现了内存泄露,需要通过分析代码上下文查看是否有内存泄露)

2.动态内存分析(Profile == Instruments)


优点:真正运行起来程序,并且可以对某一个操作来具体分析.当用户做了某一个操作时,该操作是否产生了内存泄露.(非常准确,如果提示有内存泄露,基本可以说明代码有问题)
缺点:分析速度非常慢,需要一步步来分析代码是否有问题.且可能在分析过程中有遗漏代码

二.内存使用注意

1.加载小图片\使用频率比较高的图片

1> 利用imageNamed:方法加载过的图片, 永远有缓存, 这个缓存是由系统管理的, 无法通过代码销毁缓存

2.加载大图片\使用频率比较低的图片(一次性的图片, 比如版本新特性的图片)

1> 利用initWithContentsOfFile:\imageWithContentsOfFile:\imageWithData:等方法加载过的图片, 没有缓存, 只要用完了, 就会自动销毁
2> 基本上, 除imageNamed:方法以外, 其他加载图片的方式, 都没有缓存

三.2个专业术语

1.内存泄漏

1> 该释放的对象, 没有被释放(已经不再使用的对象, 没有被释放)

2.内存溢出(Out Of Memory)

1> 内存不够用了
2> 数据长度比较小的数据类型 存储了 数据长度比较大的数据
posted @ 2015-09-02 23:37  ShaoYL  阅读(1109)  评论(0编辑  收藏  举报