adb 测试手机内存 cpu 以及几种方式对比
查看内存信息:
一般来说内存占用大小有如下规律:
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 存了什么?
- 管理java heap的状态数据(用于GC);
- JNI调用,也就是Native Stack;
- JIT(即使编译器)编译时使用Native Memory,并且JIT的输入(Java字节码)和输出(可执行代码)也都是保存在Native Memory;
- NIO direct buffer。对于IBM JVM和Hotspot,都可以通过-XX:MaxDirectMemorySize来设置nio直接缓冲区的最大值。默认是64M。超过这个时,会按照32M自动增大。
- 对于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 以及几种方式对比相关推荐
- android获取ip方法,Android开发准确获取手机IP地址的两种方式
最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...
- 【总结】实现点击累加效果的几种方式对比
//实现点击累加效果的几种方式对比Author:李金涛:Time:2018-1-1(新年新气象,更上一层楼.持续写博客.不断总结优化,博观约取,才能厚积薄发!)// 1,利用全局作用域不销毁的原理,把 ...
- Unity快速入门之一 3D基础概念、Camera、Canvas RenderMode的几种方式对比
最近要给公司的小伙伴做Unity入门,针对几个常用的知识进行快速入门介绍. Unity快速入门之一 3D基础概念.Camera.Canvas RenderMode的几种方式对比_翕翕堂 Unity快速 ...
- linux上删除文件过慢,Linux上删除大量文件几种方式对比
Linux上删除大量文件几种方式对比 linux上删除大量小文件删除测试:删除500000个小文件测试 生成文件: $ for i in $(seq 500000);do echo 'text' &g ...
- 元素隐藏的三种方式对比(针对移动端项目中的按钮,先隐藏且不能被点击 visibility:hidden)
元素隐藏的三种方式对比 display:none opacity:0 visibility:hidden 项目需求 表面一个图片遮罩,鼠标hover遮罩消失,内部元素展现,其中有一个按钮在移动端是手指 ...
- php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比
<Mysql实例php连接MySQL的两种方式对比>要点: 本文介绍了Mysql实例php连接MySQL的两种方式对比,希望对您有用.如果有疑问,可以联系我们. MYSQL数据库记录一下P ...
- android注册广播两种方式,Android 注册广播的两种方式对比
Android 注册广播的两种方式对比 1.常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到, 他的注册方式就是在你的应用程序中的AndroidManif ...
- APS计划排程系统之下的MRPII、JIT、TOC三种方式对比分析
1.生产物流计划的制订方式对比 ①MRPII采用的是集中式的物料计划方式,建立好产品加工程序,在电脑中确定好准确的订单需求和库存量,对各个生产单元传送生产指令: ②JIT利用的是看板管理控制方式,按照 ...
- android两种广播注册区别,Android 注册广播的两种方式对比
Android 注册广播的两种方式对比 1.常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到, 他的注册方式就是在你的应用程序中的AndroidManif ...
最新文章
- IAsyncResult异步设计
- PAT(乙级)1009
- mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)
- 2011东北地区赛G题(二分-网络流判可行性)
- linux登录pg数据库密码,PostgreSQL:修改数据库用户的密码
- Hearing Range
- 【工具使用】Modsim32软件使用详解
- ubuntu 下安装ibus 中文输入法
- php四级联动,二级联动 三级联动 四级联动 多级联动
- 对比不同的JSON字符串或者对象转的字符串
- 情人节神奇的传情之物,“懂爱”的你都会爱上它丨情人节系列
- 软文营销成功案例-华为用猫设置手机解锁密码
- Windows10系统以太网显示“未识别的网络”如何解决
- RAIN - SEKAI NO OWARI - 歌词翻译及罗马音译整理
- 由浅入深玩转华为WLAN—12安全认证配置(5)Portal认证,外置Protal服务器TSM对接(网页认证)
- 新闻接口调用之新浪滚动新闻
- 【转载】设计之路:如何进行软件需求分析?
- 二维条码防伪技术原理及应用简介
- android sdk manager 快速下载sdk
- Pr:Lumetri颜色面板
热门文章
- 格式工厂绿色便携版,无需安装直接运行,专注视频格式转换软件
- JAVA毕业设计居家养老系统计算机源码+lw文档+系统+调试部署+数据库
- 【线性代数(5)】等和,三叉型,反对称行列式计算及python代码辅助验证
- 封建日本挑战赛:电影/视觉特效角色获奖者访谈
- 大数据的分布式SQL查询引擎 -- Presto的详细使用
- ethtool 开启网卡_ethtool查看/设置以太网网卡
- mcinabox运行库下载安装_mcinabox运行库
- Windows server 2008 基础知识
- 三调地类图斑符号化MXD
- 使用双线性插值做图像旋转