adb 查看内存,cpu,流量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了adb 查看内存,cpu,流量相关的知识,希望对你有一定的参考价值。

参考技术A 1.查看内存

另外还有一个命令

说到内存,不得不说下内存的各个参数:

VSS - Virtual Set Size虚拟耗用内存(包含共享库占用的内存)是单个进程全部可访问的地址空间。

RSS - Resident Set Size实际使用物理内存(包含共享库占用的内存)是单个进程实际占用的内存大小,对于单个共享库,尽管无论多少个进程使用,实际该共享库只会被装入内存一次。

PSS - Proportional Set Size实际使用的物理内存(比例分配共享库占用的内存)。

USS - Unique Set Size进程独自占用的物理内存(不包含共享库占用的内存)USS是一个非常非常有用的数字,因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止,USS就是实际被返还给系统的内存大小。USS是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加。

一般情况:VSS>= RSS >= PSS >= USS。

我们经常说的内存占用一般指的是 PSS实际使用的物理内存 .

2.查看cpu

3.查看电池电量

4.查看某apk的流量:

首先先查出该apk的uid,ps一下找到应用的pid;

然后拿到pid后,查看uid,直接查看/proc/$pid/status这个文件下,存储了uid;

最后通过uid查看/proc/uid_stat/$uid/tcp_rcv 和/proc/uid_stat/$uid/tcp_snd,这两个文件一个是请求耗费的流量,一个是接受的数据流量。

如果想算速率,可以这么计算:先拿这两个参数,然后间隔10s,再拿这两个参数,两次参数之差再除以10s,就是这10s的平均速率。

adb指令 查看cpu和内存

linux man手册

查看内存

  • 查看当前进程:
    adb shell ps
    adb shell ps | grep 包名

  • 查看内存
    adb shell getprop dalvik.vm.heapsize // heapsize参数表示单个进程可用的最大内存,表示不受控情况下的极限堆
    adb shell getprop dalvik.vm.heapgrowthlimit // 以heapgrowthlimit为准,超过则OOM

  • adb shell cat /proc/meminfo
    MemTotal:Total usable RAM (i.e., physical RAM minus a few,reserved bits and the kernel binary code).
    VmallocTotal:Total size of vmalloc memory area.

  • adb shell dumpsys meminfo -a 包名,查看当前应用所占用内存
    Uptime:表示启动到现在的时长,不包含休眠的时间,单位毫秒(ms)
    Realtime:表示启动到现在的时长,包含休眠的时间,单位毫秒(ms)
    Native Heap: 进程<程序>本身使用的内存
    Dalvik Heap : 虚拟机VM使用的内存
    Dalvik Other : 虚拟机VM之外的内存(比如Java的GC内存)
    Stack:应用中的原生堆栈和 Java 堆栈使用的内存
    Pss Total: 应用程序真实占用了物理内存的空间
    Heap Alloc : 程序虚拟已使用的内存
    Heap Size:程序堆的总内存
    Heap Free : 空闲的内存
    private dirty : 私用共享内存

查看cpu

  • adb shell cat /proc/cpuinfo,查看cpu硬件信息

  • adb shell cat /proc/stat
    user (1) Time spent in user mode.
    nice (2) Time spent in user mode with low priority (nice).
    system (3) Time spent in system mode.

  • adb shell ps -t -c -p -x pid,查看线程信息
    PPID 父进程ID
    VSIZE 进程虚拟地址空间大小
    RSS 进程正在使用物理内存大小
    用户态和内核态时间(单位s) u:130, s:12
    ps进程命令
    Linux进程状态解析之R、S、D、T、Z、X

  • adb shell top -m 10 -s cpu(-m显示最大数量,-s 按指定行排序)
    PID : 应用程序ID
    PR 在android N之前代表运行在哪个核上,在android N上代表优先级,当然可能设备厂商会进行自定义
    S : 进程的状态(S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数)
    #THR : 程序当前所用的线程数
    VSS : 虚拟耗用内存(包含共享库占用的内存)
    RSS : 实际使用物理内存(包含共享库占用的内存)
    PCY : 前台(fg)和后台(bg)进程
    UID : 用户身份ID
    Name : 应用程序名称

  • adb shell top -t -m 10 -s cpu(-t显示线程,-m显示最大数量,-s 按指定行排序)

获取cpu使用率

其他指令

  • adb logcat *:E
    adb查看错误日志;在zshrc文件中添加 setopt no_nomatch

  • adb monkey test:
    adb shell monkey -p your.package.name -v 500

  • 输出线程trace,需要root,排查线程问题
    adb shell debuggerd -b [tid]
    Android打印Trace堆栈

  • adb shell dumpsys activity 包名
    查看指定包名当前窗口显示布局结构信息,可以查看当前activity布局

  • adb shell logcat | grep ActivityManager
    查看ActivityManager日志

  • adb shell getprop ro.product.cpu.abi
    查看cpu架构

  • adb shell cat proc/[pid]/statm
    查看进程占用虚拟内存、物理内存大小;
    Size (pages) 任务虚拟地址空间的大小 VmSize/4
    Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4
    Shared(pages) 共享页数 0
    Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4
    Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4
    Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4

  • adb pull和adb push
    adb pull <remote> <local>
    adb push <local> <remote>
    adb pull /sdcard/mine.jpg ~/Desktop/
    adb push xxx.txt /sdcard/a.txt

  • 签名相关

    • 查看keystore的信息
      keytool -list -keystore demo.keystore -alias mykey -v
    • 查看keystore的公钥证书信息
      keytool -list -keystore demo.keystore -alias mykey -rfc
      (注:获取Base64格式的公钥证书,RFC 1421)
    • 查看apk的签名信息
      jarsigner -verify -verbose -certs <your_apk_path.apk>
  • adb查看屏幕分辨率
    adb shell wm size
    adb shell dumpsys window | WINDOW MANAGER DISPLAY CONTENTS

  • adb 安装包
    adb install -r -d -f apk_path

  • adb应用后台模拟清除内存
    adb shell am kill 包名

  • 查看当前运行时的activity

Linux:
adb shell dumpsys activity | grep "mFocusedActivity"

windows:
adb shell dumpsys activity | findstr "mFocusedActivity"

>参考: Monkey工具

以上是关于adb 查看内存,cpu,流量的主要内容,如果未能解决你的问题,请参考以下文章

使用adb查看CPU和内存

adb指令 查看cpu和内存

Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息

linux 查看CPU内存 网络 流量 磁盘 IO

adb命令检测apk启动时间内存CPU使用情况流量电池电量等——常用的adb命令

CentOS查看CPU内存网络流量和磁盘 I/O