OOM分析

来源:互联网 发布:jira linux 破解版 编辑:程序博客网 时间:2024/05/17 22:09

OOM分析


1,dump命令使用:

busybox watch -n 3 -d dumpsysmeminfo${pid}  如: busybox watch -n 3 -d dumpsys meminfo com.gala.video


命令作用: 每隔3s打印一次dump命令





正常操作回到HomeActivity时,Activities应该为1,如果进入到 某二级页面(Activities:2) ,然后退出,回到HomeActivity。(Activities:1)。

如果回到HomeActivity,Activities不为1,说明有内存泄漏。

或者说如果进入到 某二级页面,然后退出该二级页面后,Activities:X ,X值没有回归到原值,或者说X值+1,说明该二级页面有内存泄漏



2.抓取信息

Android studio 中Android Monitor ----- > Monitors+ -------->Memory -------->Dump Java Heap 工具

运行要分析的程序,进行响应操作,后点击Dump Java Heap 按钮,稍等片刻,或生成一个 .hprof 文件,如 AAA.hprof


3.AMT 分析

1.使用android SDK 自带工具 android-sdk\platform-tools\hprof-conv.exe 进行文件转化

如 hprof-conv AAA.hprof AAAConveted.hprof (转换后的文件,可以使用MAT进行分析)

2.首先需要去下一个MAT工具。(可以是eclipse插件形式,也可以单独运行)

3.用AMT--File---openHeapDump--  选择文件如:AAAConveted.hprof 

4.Histogram--  搜索 包名:com.gala.video  或是已知Acitivity泄漏的情况下:输入 Activity 结果如下:

(看到 下图MultiSubjectActivityUIKIT 的 objects 值为8 ,很显然该Activity存在内存泄漏)



5。选择要分析的Activity右键--Merge Shortest Root to GC Path -Exclude weak/soft reference



6.找到内存泄漏的代码:

(结合实际代码,分析,找到原因:注册了observer监听,没有释放,导致Activity无法销毁)













原创粉丝点击