查看内存信息:

一般来说内存占用大小有如下规律:

VSS >= RSS >= PSS >= USS

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

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

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

USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)USS 是一个非常非常有用的数字, 因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止, USS 就是实际被返还给系统的内存大小。

USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加

VSS和RSS对查看某一进程自身的内存状况没什么作用,因为他们包含了共享库的内存使用,而往往共享库的资源占用比重是很大的,这样就稀释了对Process自身创建内存波动。

我们一般观察Uss来反映一个进程的内存使用情况,Uss 的大小代表了只属于本进程正在使用的内存大小,这些内存在此进程被杀掉之后,会被完整的回收掉。

USS是一个非常有用的数字,因为它揭示了运行一个特定进程的真实的内存增量大小,如果进程被终止,USS就是实际被返还给系统的内存大小。USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。

怀疑某个程序有内存泄露可以查看USS值是否一直有增加。

测试单个APP可使用如下命令: adb shell dumpsys meminfo com.sohu.sohuvideo

截图如下:

其中native heap是指c/c++申请的内存空间,而dalvik heap 是指java申请的内存空间,heap alloc是指分配的空间,heap free是指剩余空间,heap size是指最大的分配空间,heap size = heap alloc + heap free;

这里讲了native和dalvik的详细内容:http://blog.csdn.net/u013721793/article/details/51204001

JVM管理的内存可以总体划分为两部分:Heap Memory和Native Memory。前者我们比较熟悉,是供Java应用程序使用的;后者也称为C-Heap,是供JVM自身进程使用的。Heap Memory及其内部各组成的大小可以通过JVM的一系列命令行参数来控制,在此不赘述。Native Memory没有相应的参数来控制大小,其大小依赖于操作系统进程的最大值(对于32位系统就是3~4G,各种系统的实现并不一样),以及生成的Java字节码大小、创建的线程数量、维持java对象的状态信息大小(用于GC)以及一些第三方的包,比如JDBC驱动使用的native内存。

Native Memory 存了什么?

  1. 管理java heap的状态数据(用于GC);
  2. JNI调用,也就是Native Stack;
  3. JIT(即使编译器)编译时使用Native Memory,并且JIT的输入(Java字节码)和输出(可执行代码)也都是保存在Native Memory;
  4. NIO direct buffer。对于IBM JVM和Hotspot,都可以通过-XX:MaxDirectMemorySize来设置nio直接缓冲区的最大值。默认是64M。超过这个时,会按照32M自动增大。
  5. 对于IBM的JVM某些版本实现,类加载器和类信息都是保存在Native Memory中的。
其他类型 描述
cursor cursor消耗的内存
ashmen 匿名共享内存,用来提供共享内存
other Dev 内部driver占用的内存
.so mmap c 库代码占用的内存
.jar mmap java文件代码占用的内存
.apk mmap apk代码占用的内存
.ttf mmap ttf文件代码占用的内存
.dex mmap dex文件代码占用的内存
other mmap 其他文件占用的内存

曾经一直用total数据做参考,但是测出来的数据,APP开发不认,说太大,他们用的是dalvik heap size 这个数据,然后我就不知道用什么数据测内存了,目前保留两种方式。

查看CPU信息:

单个APP: adb shell dumpsys cpuinfo |findstr com.sohu.sohuvideo

整体手机: adb shell dumpsys cpuinfo | findstr TOTAL

adb shell top:

adb shell top 方法也同样可以对内存和CPU进行测试

top 用法

>adb shell top -h
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [-t ] [ -h ]-m num  Maximum number of processes to display. 最多显示多少个进程-n num  Updates to show before exiting.  刷新次数 -d num  Seconds to wait between updates. 刷新间隔时间(默认5秒)-s col  Column to sort by (cpu,vss,rss,thr). 按哪列排序 -t      Show threads instead of processes. 显示线程信息而不是进程-h      Display this help screen.  显示帮助文档

正常使用adb shell top 会一直不断刷新,根据top用法可设置单次情况,如:adb shell top -m 10 -s cpu -n 1

第一组数据的含义:

User  处于用户态的运行时间,不包含优先值为负进程
Nice  优先值为负的进程所占用的CPU时间
Sys   处于核心态的运行时间
Idle  除IO等待时间以外的其它等待时间
IOW   IO等待时间
IRQ   硬中断时间
SIRQ  软中断时间

第二组数据的含义:

PID   进程id
PR    优先级
CPU%  当前瞬时CPU占用率
S     进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程
#THR  程序当前所用的线程数
VSS   Virtual Set Size  虚拟耗用内存(包含共享库占用的内存)
RSS   Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY   调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
UID   进程所有者的用户id
Name  进程的名称

但是细心的同学会发现,两种测试CPU的方法的结果并不一致,且相差很多,那是什么原因呢?

http://blog.csdn.net/oujunli/article/details/51463707

这篇博客写的比较详细,计算方法不一致而已!

adb 测试手机内存 cpu 以及几种方式对比相关推荐

  1. android获取ip方法,Android开发准确获取手机IP地址的两种方式

    最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...

  2. 【总结】实现点击累加效果的几种方式对比

    //实现点击累加效果的几种方式对比Author:李金涛:Time:2018-1-1(新年新气象,更上一层楼.持续写博客.不断总结优化,博观约取,才能厚积薄发!)// 1,利用全局作用域不销毁的原理,把 ...

  3. Unity快速入门之一 3D基础概念、Camera、Canvas RenderMode的几种方式对比

    最近要给公司的小伙伴做Unity入门,针对几个常用的知识进行快速入门介绍. Unity快速入门之一 3D基础概念.Camera.Canvas RenderMode的几种方式对比_翕翕堂 Unity快速 ...

  4. linux上删除文件过慢,Linux上删除大量文件几种方式对比

    Linux上删除大量文件几种方式对比 linux上删除大量小文件删除测试:删除500000个小文件测试 生成文件: $ for i in $(seq 500000);do echo 'text' &g ...

  5. 元素隐藏的三种方式对比(针对移动端项目中的按钮,先隐藏且不能被点击 visibility:hidden)

    元素隐藏的三种方式对比 display:none opacity:0 visibility:hidden 项目需求 表面一个图片遮罩,鼠标hover遮罩消失,内部元素展现,其中有一个按钮在移动端是手指 ...

  6. php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比

    <Mysql实例php连接MySQL的两种方式对比>要点: 本文介绍了Mysql实例php连接MySQL的两种方式对比,希望对您有用.如果有疑问,可以联系我们. MYSQL数据库记录一下P ...

  7. android注册广播两种方式,Android 注册广播的两种方式对比

    Android 注册广播的两种方式对比 1.常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到, 他的注册方式就是在你的应用程序中的AndroidManif ...

  8. APS计划排程系统之下的MRPII、JIT、TOC三种方式对比分析

    1.生产物流计划的制订方式对比 ①MRPII采用的是集中式的物料计划方式,建立好产品加工程序,在电脑中确定好准确的订单需求和库存量,对各个生产单元传送生产指令: ②JIT利用的是看板管理控制方式,按照 ...

  9. android两种广播注册区别,Android 注册广播的两种方式对比

    Android 注册广播的两种方式对比 1.常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到, 他的注册方式就是在你的应用程序中的AndroidManif ...

最新文章

  1. IAsyncResult异步设计
  2. PAT(乙级)1009
  3. mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)
  4. 2011东北地区赛G题(二分-网络流判可行性)
  5. linux登录pg数据库密码,PostgreSQL:修改数据库用户的密码
  6. Hearing Range
  7. 【工具使用】Modsim32软件使用详解
  8. ubuntu 下安装ibus 中文输入法
  9. php四级联动,二级联动 三级联动 四级联动 多级联动
  10. 对比不同的JSON字符串或者对象转的字符串
  11. 情人节神奇的传情之物,“懂爱”的你都会爱上它丨情人节系列
  12. 软文营销成功案例-华为用猫设置手机解锁密码
  13. Windows10系统以太网显示“未识别的网络”如何解决
  14. RAIN - SEKAI NO OWARI - 歌词翻译及罗马音译整理
  15. 由浅入深玩转华为WLAN—12安全认证配置(5)Portal认证,外置Protal服务器TSM对接(网页认证)
  16. 新闻接口调用之新浪滚动新闻
  17. 【转载】设计之路:如何进行软件需求分析?
  18. 二维条码防伪技术原理及应用简介
  19. android sdk manager 快速下载sdk
  20. Pr:Lumetri颜色面板

热门文章

  1. 格式工厂绿色便携版,无需安装直接运行,专注视频格式转换软件
  2. JAVA毕业设计居家养老系统计算机源码+lw文档+系统+调试部署+数据库
  3. 【线性代数(5)】等和,三叉型,反对称行列式计算及python代码辅助验证
  4. 封建日本挑战赛:电影/视觉特效角色获奖者访谈
  5. 大数据的分布式SQL查询引擎 -- Presto的详细使用
  6. ethtool 开启网卡_ethtool查看/设置以太网网卡
  7. mcinabox运行库下载安装_mcinabox运行库
  8. Windows server 2008 基础知识
  9. 三调地类图斑符号化MXD
  10. 使用双线性插值做图像旋转