美文网首页
adb日常使用

adb日常使用

作者: gogoingmonkey | 来源:发表于2018-05-04 11:18 被阅读58次

    adb 命令相信大家都经常使用,但是很多安卓开发者只是用了安装卸载,其实adb 还有很多强大的功能

    adb 查看应用包名

    很多时候我们去逆向人家的APK,都能知道包名,或者很多时候要利用APK包名搞些事情就可以使用adb

    adb shell pm list packages
    

    使用以上命令就可以查看我们设备上所有应用的包名,如果想知道应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数

    adb shell pm list packages -f
    

    如果配置了aapt可以使用下面的命令,如果没配环境,直接在aapt目录下

    没有apk,应用已经安装到手机或虚拟机中

    启动logcat,使用命令

    adb logcat ActivityManager:I *:s
    

    然后启动应用,这个时候 logcat会出现下面的:


    image.png

    so.ofo.labofo
    com.xiaoniu.finance 都是应用启动的包名

    adb 查看内存 adb shell dumpsys meminfo 使用

    adb shell dumpsys meminfo 包名
    

    这里我直接拿淘宝的应用了,如下:


    image.png

    我们重点看下下面几个参数:


    image.png
    allocated是分配了的内存,对应的左边分别是native和dalvik 两个地方
    Heap Size :代表最大总共分配空间

    Heap Alloc :已经分配的内存空间
    mallinfo是一个C库, mallinfo 函数提供了各种各样的通过C的malloc()函数分配的内存的统计信息。
    Dalvik Heap Size:从Runtime totalMemory()获得,Dalvik Heap总共的内存大小。
    Dalvik Heap Alloc: Runtime totalMemory()-freeMemory() ,Dalvik Heap分配的内存大小。
    Dalvik Heap Free:从Runtime freeMemory()获得,Dalvik Heap剩余的内存大小。
    Dalvik Heap Size 约等于Dalvik Heap Alloc + Dalvik Heap Free
    OtherPss, include Cursor,Ashmem, Other Dev, .so mmap, .jar mmap, .apk mmap, .ttf mmap, .dex mmap, Other mmap, Unkown统计信息都可以在process的smap文件看到。
    Objects and SQL 信息都是从Android Debug信息中获得。
    当总数也就是total这一列超过单个程序内存的最大限制时,OOM就很有可能会出现了,多数时候,发生OOM 都是在做一些跟图片相关的操作

    APP summary

    再继续看上面图片 app summary


    image.png

    进程独占内存。也就是进程销毁时可以回收的内存容量。通常private Dirty内存是最重要的部分,因为只被自己进程使用。Dirty内存是已经被修改的内存页,因此必须常驻内存(因为没有swap);Clean内存是已经映射持久文件使用的内存页(例如正在被执行的代码),因此一段时间不使用的话就可以置换出去。

    实际使用内存(PSS):
    将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存

    通常我们需要关注PSS TOTAL 和 Private Dirty

    Heap Viewer

    事实查看内存分配情况和空闲内存大小
    发现memory Leaks
    AS中点击机器人图标打开Android Device Mointor, 如下:
    选中进程进行Heap 分析,点击update heap, 查看右侧的heap标签页


    image.png

    Heap视图显示了堆内存使用的情况,每次垃圾回收都会更新,要查看更新情况, 点击Cause GC即可
    我们需要在执行查看内存是否有泄漏的用例之前和之后执行GC,即手动点击Cause GC,观察allocated大小,查看内存是否在一个稳定的数值,多次操作,只要内存稳定,即没有内存泄漏, 如果不断变大,即表示有内存泄漏。
    该工具也可以用来查看是否会发生内存抖动

    相关文章

      网友评论

          本文标题:adb日常使用

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