Android进程内存简单排查

前言

本文旨在仅用adb的命令快速排查内存问题

分析步骤

第一步:确认你的应用包名

    本地有安装包时:aapt dump badging [yourapp.apk],你可以看到package: name='com.xxx.xxxx'等信息及权限申请信息。

    本地没有安装包,仅手机上安装时:adb shell pm list packages,查看已安装列表,肉眼识别可能是哪个。不想肉眼识别,可以启动对应app,然后执行:adb shell dumpsys window|findstr mCurrentFocus

第二步:确认你的应用当前有几个进程

    adb shell "ps|grep com.xxx.xxxx"

    也可以确定当前界面功能在哪个进程:

    adb shell "dumpsys activity|grep com.xxx.xxxx"

    在输出的堆栈中,找到mFocusedActivity部分的信息,底部进程列表会标记(top-activity)

    当然adb shell "activity acitvities" 输出的信息中可以按照包名过滤,就能看到当前有哪些activity并且在哪个进程

第三步:查看指定进程的内存信息

    adb shell dumpsys meminfo com.xxx.xxxx:xxxprocess

    此处通过输出信息中的 Activities可以反复操作进出activity验证是否存在最浅显的Activity泄漏,通过对比Pss Total等的增长信息可以确定是否有其他内存泄漏。

第四步:进一步分析

    adb shell

    am dumpheap com.xxx.xxxx:xxxprocess /data/local/tmp/xxx.hprof

    以上获取内存dump,然后取到pc本地

    adb pull /data/local/tmp/xxx.hprof /pc本地目录/xxx.hprof

    转换格式为ddms可识别

    sdk目录/platform-tools/hprof-conv.exe /pc本地目录/xxx.hprof /pc本地目录/xxx-conv.hprof

    拖动xxx-conv.hprof到mat就可以详细分析内存堆栈中的Activity对象及其他信息了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 获取编译时间cat /proc/version 内核崩溃cat /proc/last_kmsg 获取硬件信息adb...
    慢牛策略阅读 9,202评论 0 14
  • 1、内存了解 在Android App的性能优化的各个部分里,内存方面的知识较多且不易理解,内存的问题绝对是最令人...
    萧竹阅读 8,984评论 1 12
  • 导语 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对...
    一个有故事的程序员阅读 886评论 2 9
  • 今天向往常休息一样在家里睡懒觉睡到9点多才起来,没有因为在老公家就觉得要表现自己的所谓的贤惠非要一大早起来,我因为...
    金龟子的小天地阅读 180评论 0 3
  • 2016年11月11日丰盛日记 16 1.我拥有快速理解能力,接近考试时间,快速做了两套题库,不管结果如何都欣然接...
    坚持玲丽阅读 123评论 0 0