1.打开AndroidStudio的Profile

1.在菜单栏依次点击 View > Tool Windows > Profiler
2.在Profile窗口点击左上角的"+"图标,添加要分析的进程

Android内存泄漏 java内存分析_Android内存

3.点击MEMORY进入内存详情界面
如下图所示一个应用的内存包括:java,native,graphics,stack,code,other,我们这次只对java的内存进行分析

Android内存泄漏 java内存分析_java内存分析_02

2.抓取内存快照

1.通过复现步骤操作相应的应用,然后观察Profile中内存增长的情况
2.待内存出现很明显的增长,并且多次点击上方的"GC"图标,内存还是有明显增长,则可以抓取内存快照进行分析了
3.通过命令抓取内存快照1.hprof文件,并从设备中导出
adb shell am dumpheap com.sohu.inputmethod.sogou.tv /data/local/tmp/1.hprof
adb pull /data/local/tmp/1.hprof ./my_file

3.内存分析

1.进入Sdk/platform-tools目录下
2.通过命令hprof-conv 1.hprof 1_mat.hprof对文件进行转换
3.然后通过Memory Analyzer Tool工具进行分析,或者将1_mat.hprof文件拖拽到eclipse,会提示安装MAT插件,待安装完成即可打开hprof文件
4.如下图所示,为内存快照的总览

Android内存泄漏 java内存分析_java内存分析_03

5.选择Leak Suspects,查看可能出现的内存泄漏的地方

Android内存泄漏 java内存分析_Android内存_04

6.点击Problem Suspect下的"Details"进入查看可能出现的泄漏对象
如下图所示这个是一个JNI对应,由于其比较大,有可能会导致内存溢出,如果在应用退出时将其创建的内存释放,则就没有问题

Android内存泄漏 java内存分析_Android内存_05