iOS内存优化

  • GPU:硬件层面。

  • CPU:软件层面。程序运行时分分配内存。

    1. 对象创建了却没有使用,也没有释放。
    2. 对象一直是nil。
    3. setObject的key和value不能为nil,value为nil也会占用不必要内存。
    4. 用到C函数方法要特别的逐一,C还是MRC机制,例如CoreGraphics库、Core Foundation对象的要特别注意,需要手动释放。
    5. 类对象没有重用好,或者内存分配空间多余。
    6. 错用空指针。
    
  • 从理论上,APP内存泄漏大部分是对象和变量未释放,导致APP运行内存越来越大,直到GPU、CPU其中一方承受不了直接崩溃。但并非完全是未释放的对象和变量引起的泄漏,更多需要借助工具来检查。

  • Xcode提供了检测工具:Analyze、Instruments、Leaks

一、Analyze静态分析检测

Analyze静态分析检测不需要运行程序,使用方法:打开xcode项目,按快捷键command + shift + B, 或者是:打开Xcode-->Product-->Analyze,逐一去解决就好了。

Analyze使用方式之一.png
Analyze静态分析检测结果有24条泄漏/鸡肋.png

Analyze静态分析泄漏位置.png

例子.png

二、Instruments

  • Instruments动态分析检测需要运行程序,最好是使用真机调试,真机的GPU硬件跟CPU软件层面跟Mac上模拟器差别有大。使用方式:打开Xcode,Xcode --> Open developer Tool --> Instruments; 或者command + i。经过静态分析之后基本就没什么问题了,Inastruments有时候能指出泄漏的地方具体在哪里,大部分没什么修复意义。
(1)Leaks
  • Leaks用来分析内存泄漏


    leaks发现泄漏.png
(2)Allocations
  • Allocations用来分析内存分配情况,


    Allocation.png

你可能感兴趣的:(iOS内存优化)