android性能测试工具之dumpsys

补记: MAT(memory analyzer tool )是google 推荐的进行内存使用量分析的工具. 功能全面而强大!!!

首先看一下dumpsys有哪些功能:
dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。
dumpsys [Option]
meminfo 显示内存信息
cpuinfo 显示CPU信息
account 显示accounts信息
activity 显示所有的activities的信息
window 显示键盘,窗口和它们的关系
wifi 显示wifi信息

从我的G14中可以看到它从以下service获得所有的信息
Currently running services:
SurfaceFlinger
accessibility
account
activity
alarm
appwidget
assetredirection
audio
backup
battery
batteryinfo
bluetooth
bluetooth_a2dp
bluetooth_hid
bluetooth_network
clipboard
connectivity
content
cpuinfo
device_policy
devicestoragemonitor
diskstats
dropbox
entropy
hardware
input_method
iphonesubinfo
isms
location
media.audio_flinger
media.audio_policy
media.camera
media.player
meminfo
mount
netstat
network_management
notification
package

接下来,来看看Android系统是如何实现dumpsys的。
dumpsys的代码在mydroid/frameworks/base/cmds/dumpsys/dumpsys.cpp
所有的dump信息都是由重载了Binder中的dump函数的类来完成:
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {

}
代码很简单,发现搜有dump的信息都是由defaultServiceManager(关于Android的ServiceManager的结构分析参见我之后的一篇文章)提供的由系统注册的所有service来提供信息。
以meminfo为例:
它是在mydroid/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的setSystemProcess函数处被注册的
SrviceManager.addService(“activity”, m);
ServiceManager.addService(“meminfo”, new MemBinder(m));

MemBinder->ProcessRecord->各个正在运行状态的ApplicationThread的状态(mydroid/frameworks/base/core/java/android/app/ActivityThread.java),从中得到需要的meminfo信息。

     这其中其实牵涉到负责的Android的是如何管理Linux的进程,同时又是如何把Linux的进程管理起来提供各种信息给Java层使用。总之,关键还是package的管理和它的活动周期的管理问题。值得深入理解。

摘自 Melody_lu123

这是一个很好用的工具,在adb shell下可以使用,主要用来获取一些系统service的信息,也可以对这些服务做一些简单的控制。首先是获得哪些service信息可以dump$ adb shell dumpsys | grep DUMP
DUMP OF SERVICE AtCmdFwd:
DUMP OF SERVICE SurfaceFlinger:
DUMP OF SERVICE accessibility:
DUMP OF SERVICE account:
DUMP OF SERVICE activity:
DUMP OF SERVICE alarm:
DUMP OF SERVICE appwidget:
DUMP OF SERVICE audio:
DUMP OF SERVICE backup:
DUMP OF SERVICE battery:
DUMP OF SERVICE batteryinfo:
DUMP OF SERVICE bluetooth:
DUMP OF SERVICE bluetooth_a2dp:
DUMP OF SERVICE clipboard:
....然后就是具体获取某个服务的信息,比如电池使用信息:$ adb shell dumpsys batteryinfo比如抓某个package的进程的memory使用情况:$ adb shell dumpsys meminfo YourPkg再比如测试wifi功能,写个script脚本:$ adb shell svc wifi enable  # disable对应禁用wifi
$ adb shell sleep 4
$ adb shell dumpsys wifi > wifiEnable.txt如果dumpsys不能用,检查你的manifest.xml是不是加了这个permission:android.permission.DUMP~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)Main stack:TaskRecord{438f1ed8 #9 A com.leaves.ipanel U 0}Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity }Hist #2: ActivityRecord{4265b1b0 u0 com.leaves.ipanel/.ActivityA}Intent { act=com.leaves.ipanel.ActivityA flg=0x20000000 cmp=com.leaves.ipanel/.ActivityA }ProcessRecord{4292a550 2115:com.leaves.ipanel/u0a10061}Hist #1: ActivityRecord{42485758 u0 com.leaves.ipanel/.MainActivity}Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity }ProcessRecord{4292a550 2115:com.leaves.ipanel/u0a10061}TaskRecord{426f4820 #2 A com.android.launcher U 0}Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10600000 cmp=com.android.launcher/com.android.launcher2.Launcher }Hist #0: ActivityRecord{4291c7b0 u0 com.android.launcher/com.android.launcher2.Launcher}Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher/com.android.launcher2.Launcher }ProcessRecord{4267f0b8 636:com.android.launcher/1000}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT —— 应用程序发布

QT应用程序的发布 将QT应用程序打包给其他人使用,需要一些dll动态链接库;在QT的安装目录下,如:D:\QT\4.8.5\bin中寻找;(发布的时候选择release版本的可执行程序)。 步骤: 1、在桌面新…

Raspbian 中国软件源

花了些时间整理了目前最新的树莓派中国大陆地区的软件源,记下来,希望对大家有帮助。 中国科学技术大学Raspbian http://mirrors.ustc.edu.cn/raspbian/raspbian/ 阿里云Raspbian http://mirrors.aliyun.com/raspbian/raspbian/ 清华大学Raspbian http://…

一经度等于多少千米

一经度等于多少千米,数值是不确定的,不过,该数值的范围为:0km—111km。 经度等于多少千米,是和纬度有密切关系的,经度会随着纬度的变化而变化,其可以根据公式来计算,计算公式为&…

汇顶科技2021秋招笔试

来源于读者投稿,作者Angel。笔试时间:2020.08.24,20:00-21:00提醒:很多大公司秋招在七八月份就要投递简历,九月已经晚了。题型:通用部分单选10道 不定项选择题2道 填空题2道 开放题目…

创业版上市与SAP管理软件系统的关系

最近一直在忙于公司的业务,也有一些偷懒的心理,正在调整自已的心态,所以一段时间没有在自已的BLOG上留下痕迹了。由于客户提及企业目标是创业板上市的话题比较多,因此我一直在关注创业板上市这个内容。由于不是业内的专业人士&…

QT——设置可执行文件图标

QT设置可执行文件图标 软件编译出来的默认的可执行程序的图标是真的丑,建议还是换成漂亮一点的图标。(在公司的话,就用公司的logo,需要后缀是ico的)。如工程名为:mytest.pro 步骤: 1、创建ico…

安装opencv 、opencv_contrib的方法

安装opencv 、opencv_contrib的方法 opencv4.x版本都可以 opencv 、opencv_contrib内网下载: https://www.raoyunsoft.com/opencv 安装方法: https://copyfuture.com/blogs-details/202211191221591932 官网安装方法: https://docs.opencv.o…

科大讯飞2021笔试题

来源于读者投稿,作者Angel笔试时间:2020.09.12,19:00——21:00岗位:嵌入式软件开发题型:四道编程题,4*1040分题目1、定义一个n*m矩阵,找到两个不在同一行同一列的数字,使…

跨交换机VLAN配置

CCNP实验之&#xff08;跨交换机VLAN&#xff09;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />跨交换机设置原则:存在一台VLAN服务器&#xff0c;可以存在多台vlan客户端&#xff0c;那么需要配置VTP域。交换机的连接需干线&…

QT——label

QT —— label 1、纯文本&#xff1a;使用setText()设置一个QString QLabel *label new QLabel(this);label->setText("label");label->setStyleSheet("color: red");// label->text(); // 获取文本 2、静态图像&#xff1a;使用setPixmap()设置…

在64位Ubuntu上编译32位程序常见错误

问 题1&#xff1a; 找不到头文件 asm/errno.h 解决办法 &#xff1a; 【/usr/lib/gcc$ 】sudo ln -s x86_64-linux-gnu/asm asm 问题2&#xff1a;找不到gcc静态库&#xff0c;错误描述如下 ~/tools/dnn-offline-htk-32/HTKTools$ gcc -o HBuild -m32 -ansi -D_SVID_SOU…

详细记录丨Realtek RTL8188FU WiFi 驱动移植

1 参考资料 1、芯片数据手册&#xff1a;TL8188FCA.pdf2、驱动移植手册&#xff1a;Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf3、【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.3.pdf4、Linux 添加 WiFi 驱动&#xff1a;https://blog.csdn.net/sbddbfm/…

我在Freebsd下安装帝国CMS系统整合Discuz的服务器环境配置

编译MYSQL选项&#xff1a;./configure --prefix/home/mysql --enable-assembler --with-charsetgbk --with-extra-charsetsgbk编译完成安装以后&#xff0c;需要对相应的MYSQL目录设置权限&#xff1a;chown -R root:mysql /home/mysqlchown -R mysql:mysql /home/mysql/varch…

C小项目 —— 学生信息管理系统

C小项目 —— 学生信息管理系统实现功能&#xff1a;1. 录入学生信息 2. 显示所有学生信息 3. 按学号查询学生信息 4. 按姓名查询学生信息&#xff08;支持模糊查询&#xff09; 5. 按年龄查询学生信息 6. 修改学生信息 7. 删除学生信息 8. 保存学生信息到文件 9. 从文件载入学…

拆解1968年的美国军用电脑,真的怀疑是“穿越”啊!

来源&#xff1a;数码之家文 | 禅哥这台机器在本人的eBay收藏夹里呆了很久&#xff0c;某日无意间扫了一眼收藏夹&#xff0c;突然发现卖家大降价&#xff0c;只要15刀&#xff0c;还有best offer选项。15刀你买不了吃亏&#xff0c;15刀你买不了上当。事不宜迟果断下手。根据非…

ZJOI2018 Round2 游记

day0 高铁上颓了一部电影,然后闭上眼睛就到了 醒来之后发现被绑了艹,袖子被打了个结,搞了 \(20\) 分钟才解开,真想把绑我的人吊起来 \(xxx\) 公交车上碰到一位长者,被教育了一顿 长者:"你们大学生呐,戴着一副眼镜,肯定不是读书读出来的,玩游戏玩多了吧?" 我:".…

暂无标题

最近感觉好无聊&#xff0c;天天堕落&#xff0c;没事可干。上网也感觉越来越无聊了&#xff0c;除了聊天还是聊天&#xff0c;根本就没有什么事干&#xff0c;时间就这么一点一点的过去。大学有所谓的真感情吗&#xff1f;感觉有又感觉没有&#xff0c;没有的人实在是太多了&a…

使用PWM实现语音播放

本文转自ARM中文社区&#xff0c;作者&#xff1a;Xiaoya链接&#xff1a;https://community.arm.com/cn/b/blog/posts/nucleof429-2-pwm事实上大部分MCU都可以实现语音播放下面是一段音频数据的波形局部放大图&#xff1a;以一定的速度采样&#xff08;ADC&#xff09;这些波形…

C小项目 —— 学生选课系统

C小项目 —— 学生选课系统#include<stdio.h> #include<windows.h> #include<stdlib.h> #include<conio.h>typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t;#define CLASS_CLS system("cl…

物流行业应用虚拟化解决方案

物流行业应用虚拟化解决方案来源&#xff1a;N-soft 51CTO提醒您&#xff0c;请勿滥发广告.cn 对物流企业来说&#xff0c;对外的货物流动增加了企业的利润&#xff0c;而对内的信息数据流动则是业务持续发展的基本保障。于是乎&#xff0c;架构自身内部远程应用接入系统…