
图一 Clang静态检测
3) 如果静态检测工具不能解决问题,就需要更多的分析和借助instruments工具。
a)首先要重现问题,找到是哪些操作容易产生内存泄露。主要通过一些测试和推理来判断,比如找出哪些操作重复进行时,内存增长比较明显或者会Crash。
b)借助instruments工具。instruments是在程序运行时在程序中注入一些代码来动态的检测内存分配状况和泄露问题。Run -> Run with perfomance tools - > leaks 即可启动。下图是运行leak instrument的一次结果,如果leak是你的代码引起的,你还可以直接查看到引起泄露的代码。
图二 leaked Blocks
图三 leaked code
c)还有一个instrument叫Allocation,它可以实时监测当前分配了多少内存。结合这个来进行a)步骤的推断,往往会比较有效。可以通过Run -> Run with perfomance tools - >Allocations启动,也可以在instruments启动后通过window->library ->Allocations加进来。
http://www.cnblogs.com/MobileDevelop/archive/2010/09/21/1779137.html

图一 Clang静态检测
3) 如果静态检测工具不能解决问题,就需要更多的分析和借助instruments工具。
a)首先要重现问题,找到是哪些操作容易产生内存泄露。主要通过一些测试和推理来判断,比如找出哪些操作重复进行时,内存增长比较明显或者会Crash。
b)借助instruments工具。instruments是在程序运行时在程序中注入一些代码来动态的检测内存分配状况和泄露问题。Run -> Run with perfomance tools - > leaks 即可启动。下图是运行leak instrument的一次结果,如果leak是你的代码引起的,你还可以直接查看到引起泄露的代码。
图二 leaked Blocks
图三 leaked code
c)还有一个instrument叫Allocation,它可以实时监测当前分配了多少内存。结合这个来进行a)步骤的推断,往往会比较有效。可以通过Run -> Run with perfomance tools - >Allocations启动,也可以在instruments启动后通过window->library ->Allocations加进来。