美文网首页编程进阶之路移动测试
Android内存查看命令小结

Android内存查看命令小结

作者: 白天才痴 | 来源:发表于2016-02-26 15:45 被阅读864次

    app内存详情的查看,主要有两个命令

    1、adb shell dumpsys meminfo packagename ,这个命令按谷歌官方说法也可以后面加-d得到更多的信息(我在4.4的N4上没有得到)
    2、adb shell procrank 这个命令貌似在很多手机上都没有,N4居然都木有,busybox里也没提供,所以主要使用第一个命令,现在安卓内存测试工具基本用的都是第一个命令做的
    针对app的内存测试主要是要检查其是否有内存泄露,当然也可以从用户体验的角度去进行评测,与竞品进行横向比较,以及纵向比较。
    下面主要针对meminfo的输出信息进行说明,资料整理自互联网

    Image.png

    Naitve Heap Size: 从mallinfo usmblks获得,代表最大总共分配空间
    Native Heap Alloc: 从mallinfo uorblks获得,总共分配空间
    Native Heap Free: 从mallinfo fordblks获得,代表总共剩余空间
    Native Heap Size: 约等于Native Heap Alloc + Native Heap Free

    其他类型 smap 路径名称 描述

    Cursor /dev/ashmem/Cursor Cursor消耗的内存(KB)
    Ashmem /dev/ashmem 匿名共享内存用来提供共享内存通过分配一个多个进程
    可以共享的带名称的内存块
    Other dev /dev/ 内部driver占用的在 “Other dev”
    .so mmap .so C 库代码占用的内存
    .jar mmap .jar Java 文件代码占用的内存
    .apk mmap .apk apk代码占用的内存
    .ttf mmap .ttf ttf 文件代码占用的内存
    .dex mmap .dex Dex 文件代码占用的内存
    Other mmap 其他文件占用的内存
    Gpraphics 图形相关的内存占用,这个我看了对于一个app来说占用值基本是稳定的
    GL 貌似是Graphics lib,也就是图形库部分

    Gpraphics和GL是android 4.4以上增加的与图形显示有关的内存占用分类,之前应该是分类到unknown里了

    当一个app运行起来后,我们从自带的应用管理器中看到的占用内存,基本上就等于Pss的Total值,因为用户看到的就是这里,所以我们在做内存测试时也是关注这里
    对于安卓系统,我们都知道其是通过gc进行Dalvik堆内存回收的,而其对应的就是上图中的Dalvik heap值。

    安卓系统为每个app都设置了java堆的最大值,可以通过

     ActivityManager mManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE ); int mTotalSize = mManager.getMemoryClass(); Toast. makeText(this, String.valueOf(mTotalSize), Toast.LENGTH_LONG).show();
    

    代码获取该值,现在的2G内存手机基本最大值都是192MB

    在做内存测试时重点关注的点有:

    1、黑盒做内存泄露测试思路:进入应用后最大化内存占用,待内存达到峰值后,退出app,返回操作,观察内存峰值,如果峰值在上涨多半是有内存泄露
    2、白盒查内存泄露:使用MAT分析hprof文件
    3、做竞品的类似功能下内存占用对比,如果占用内存比竞品高,与产品沟通是否需要优化

    相关文章

      网友评论

        本文标题:Android内存查看命令小结

        本文链接:https://www.haomeiwen.com/subject/txrwkttx.html