背景
在Android开发中,因为多了生命周期概念和相关类,很容易出现内存泄漏的问题,并且找到和复现这些问题很麻烦。不过内存泄漏是很容易被代码检测或者现成的工具检测出来的。基于这个场景,需要学会dump heap和通过heap分析内存泄漏。
如何获取heap信息
一、使用Android Studio对于能usb连接的设备,可以直接监控进程获取
1、打开profiler,studio中依次选择 View->Tool windows->Profiler
2、选择要监控的进程,
3、选择MEMORY,右键选择Dump Java HEAP,会自动结束并生成Heap Dump文件
二、命令获取方式
1、adb shell am dumpheap [参数]
| 参数 | 说明 |
|---|---|
| –user <USER_ID> | current | 指定哪些用户运行,如果不指定则使用当前用户 |
| -n | 获取native heap而不是managed heap |
例:adb shell am dumpheap com.demo.micolauncher /data/local/tmp/test.hprof
2、获取内存快照(后缀名必需为.hprof)
使用adb pull /data/local/tmp/test.hprof e:\ 命令将testr.hprof文件保存到电脑本地
3、使用命令:hprof-conv e:\test.hprof e:\test1.hprof 进行文件转化
4、然后

本文介绍如何使用Android Studio和命令行工具获取Heap信息,通过Heap分析定位内存泄漏问题。包括使用Profiler进行内存快照获取及转换,解读Heap信息,以及如何通过leaks功能找到内存泄漏的具体位置。

96

被折叠的 条评论
为什么被折叠?



