1.CUP

(1)adb shell (进入linux的底层)
(2)echo 3>/proc/sys/vm/drop_caches (清除一下系统cache)
(3)top -d 1 | grep com.baidu.BaiduMap (以百度地图为例,每一秒打印一次资源利用情况)
  top -d 1  //查看所有的

2.Mem

(1) 查看属性

adb shellgetprop|grep heapgrowthlimit//查看单个应用程序最大内存限制 [dalvik.vm.heapgrowthlimit]
adb shell getprop|grep dalvik.vm.heapstartsize//应用启动后分配的初始内存 [dalvik.vm.heapstartsize]
adb shell getprop|grep dalvik.vm.heapsize//单个java虚拟机最大的内存限制 [dalvik.vm.heapsize]

(2) 查看程序的内存使用情况://仅仅PSS

adb shelldumpsys meminfo//全部,但是没有下面的命令详细
adb shell dumpsys meminfo $package_name or $pid   //使用程序的包名或者进程id

(3) 查看USS和PSS//手机需要root

adb shellprocrank//...|grep YOUR_APP
adb shell dumpsys meminfo//只是查看PSS

//********************************************************************************************************
【注】top
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. // 显示帮助文档

【解释】
--CPU占用率: 
User       用户进程 
System  系统进程 
IOW       IO等待时间 
IRQ        硬中断时间

--CPU使用情况(指一个最小时间片内所占时间,单位jiffies。或者指所占进程数): 
User    处于用户态的运行时间,不包含优先值为负进程 
Nice    优先值为负的进程所占用的CPU时间 
Sys     处于核心态的运行时间 
Idle      除IO等待时间以外的其它等待时间 
IOW    IO等待时间 
IRQ     硬中断时间 
SIRQ   软中断时间

--进程属性: 
PID        进程在系统中的ID 
CPU%   当前瞬时所以使用CPU占用率 
S           进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 
#THR    程序当前所用的线程数 
VSS      Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) 
RSS      Resident Set Size 实际使用物理内存(包含共享库占用的内存) 
PCY      OOXX,不知道什么东东 
UID       运行当前进程的用户id 
Name   程序名称android.process.media

--ps:内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

VSS      Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

RSS      Resident Set Size 实际使用物理内存(包含共享库占用的内存)

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

USS     Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

【温馨提示】
(1)我们一般观察 Uss 来反映一个Process的内存使用情况,Uss 的大小代表了只属于本进程正在使用的内存大小,这些内存在此Process被杀掉之后,会被完整的回收掉,Vss和Rss对查看某一Process自身内存状况没有什么价值,因为他们包含了共享库的内存使用,而往往共享库的资源占用比重是很大的,这样就稀释了对Process自身创建内存波动。 而Pss是按照比例将共享内存分割,某一Process对共享内存的占用情况。
(2)在取内存数据前可以前判断一下手机是否root, 如果root了取USS比较好一些,如果没有root取PSS 也是可以的。

//********************************************************************************************************

3.Profile GPU rendering (GPU呈现模式分析)

adb shell dumpsys gfxinfo <PACKAGE_NAME>

【结果中部分概念解释】

    Applications Graphics Acceleration Info:
    Uptime: 16264702 Realtime: 28169900

From ActivityManagerService.java:

[plain] view plain copy
  1. long uptime = SystemClock.uptimeMillis();
  2. long realtime = SystemClock.elapsedRealtime();
  3. pw.println("Applications Graphics Acceleration Info:");
  4. pw.println("Uptime: " + uptime + " Realtime: " + realtime);

Also from SystemClock description:

Three different clocks are available, and they should not be confused:

(1) currentTimeMillis()

is the standard "wall" clock (time and date) expressing milliseconds since the epoch. The wall clock can be set by the user or the phone network (see setCurrentTimeMillis(long)), so the time may jump backwards or forwards unpredictably. This clock should only be used when correspondence with real-world dates and times is important, such as in a calendar or alarm clock application. Interval or elapsed time measurements should use a different clock. If you are using System.currentTimeMillis(), consider listening to the ACTION_TIME_TICK, ACTION_TIME_CHANGED and ACTION_TIMEZONE_CHANGED Intent broadcasts to find out when the time changes.

(2) uptimeMillis()

is counted in milliseconds since the system was booted. This clock stops when the system enters deep sleep (CPU off, display dark, device waiting for external input), but is not affected by clock scaling, idle, or other power saving mechanisms. This is the basis for most interval timing such as Thread.sleep(millls), Object.wait(millis), and System.nanoTime(). This clock is guaranteed to be monotonic, and is suitable for interval timing when the interval does not span device sleep. Most methods that accept a timestamp value currently expect the uptimeMillis() clock.

(3) elapsedRealtime() and elapsedRealtimeNanos()

return the time since the system was booted, and include deep sleep. This clock is guaranteed to be monotonic, and continues to tick even when the CPU is in power saving modes, so is the recommend basis for general purpose interval timing.

4.其他 dumpsys 命令

Android提供的dumpsys工具可以用于查看感兴趣的系统服务信息与状态,手机连接电脑后可以直接命令行执行adb shell dumpsys 查看所有支持的Service但是这样输出的太多,可以通过dumpsys | grep "DUMP OF SERVICE" 仅显示主要的Service的信息

1、列出dumpsys所有支持命令

?
[plain] view plain copy
  1. > adb shell
  2. $ dumpsys | grep "DUMP OF SERVICE"
以下是在三星S3手机上的输出信息
[plain] view plain copy
  1. C:\Windows\System32>adb shell
  2. shell@m:/ $ dumpsys | grep"DUMP OF SERVICE"
  3. dumpsys | grep"DUMP OF SERVICE"
  4. DUMP OF SERVICE AtCmdFwd:
  5. DUMP OF SERVICE CustomFrequencyManagerService:
  6. DUMP OF SERVICE DirEncryptService:
  7. DUMP OF SERVICE Exynos.HWCService:
  8. DUMP OF SERVICE Exynos.IPService:
  9. DUMP OF SERVICE FMPlayer:
  10. DUMP OF SERVICE LEDService:
  11. DUMP OF SERVICE SecTVOutService:
  12. DUMP OF SERVICE SurfaceFlinger:
  13. DUMP OF SERVICE TvoutService_C:
  14. DUMP OF SERVICE accessibility:
  15. DUMP OF SERVICE account:
  16. DUMP OF SERVICE activity:
  17. DUMP OF SERVICE alarm:
  18. DUMP OF SERVICE android.security.keystore:
  19. DUMP OF SERVICE application_policy:
  20. DUMP OF SERVICE appops:
  21. DUMP OF SERVICE appwidget:
  22. DUMP OF SERVICE audio:
  23. DUMP OF SERVICE backup:
  24. DUMP OF SERVICE battery:
  25. DUMP OF SERVICE batteryinfo:
  26. DUMP OF SERVICE bluetooth_manager:
  27. DUMP OF SERVICE bluetooth_secure_mode_manager:
  28. DUMP OF SERVICE clipboard:
  29. DUMP OF SERVICE clipboardEx:
  30. DUMP OF SERVICE commontime_management:
  31. DUMP OF SERVICE connectivity:
  32. DUMP OF SERVICE container_service:
  33. DUMP OF SERVICE content:
  34. DUMP OF SERVICE country_detector:
  35. DUMP OF SERVICE cpuinfo:
  36. DUMP OF SERVICE dbinfo:
  37. DUMP OF SERVICE device_policy:
  38. DUMP OF SERVICE devicestoragemonitor:
  39. DUMP OF SERVICE diskstats:
  40. DUMP OF SERVICE display:
  41. DUMP OF SERVICE dreams:
  42. DUMP OF SERVICE drm.drmManager:
  43. DUMP OF SERVICE dropbox:
  44. DUMP OF SERVICE edmnativehelper:
  45. DUMP OF SERVICE enterprise_license_policy:
  46. DUMP OF SERVICE enterprise_policy:
  47. DUMP OF SERVICE entropy:
  48. DUMP OF SERVICE gfxinfo:
  49. DUMP OF SERVICE hardware:
  50. DUMP OF SERVICE harmony_eas_service:
  51. DUMP OF SERVICE input:
  52. DUMP OF SERVICE input_method:
  53. DUMP OF SERVICE iphonesubinfo:
  54. DUMP OF SERVICE isms:
  55. DUMP OF SERVICE license_log_service:
  56. DUMP OF SERVICE location:
  57. DUMP OF SERVICE lock_settings:
  58. DUMP OF SERVICE log_manager_service:
  59. DUMP OF SERVICE mdm.remotedesktop:
  60. DUMP OF SERVICE media.audio_flinger:
  61. DUMP OF SERVICE media.audio_policy:
  62. DUMP OF SERVICE media.camera:
  63. DUMP OF SERVICE media.player:
  64. DUMP OF SERVICE meminfo:
  65. DUMP OF SERVICE motion_recognition:
  66. DUMP OF SERVICE mount:
  67. DUMP OF SERVICE multiwindow:
  68. DUMP OF SERVICE netpolicy:
  69. DUMP OF SERVICE netstats:
  70. DUMP OF SERVICE network_management:
  71. DUMP OF SERVICE nfc:
  72. DUMP OF SERVICE nfccontroller:
  73. DUMP OF SERVICE notification:
  74. DUMP OF SERVICE package:
  75. DUMP OF SERVICE permission:
  76. DUMP OF SERVICE phone:
  77. DUMP OF SERVICE phone_restriction_policy:
  78. DUMP OF SERVICE phoneext:
  79. DUMP OF SERVICE power:
  80. DUMP OF SERVICE remoteinjection:
  81. DUMP OF SERVICE samplingprofiler:
  82. DUMP OF SERVICE samsung.smartfaceservice:
  83. DUMP OF SERVICE scheduling_policy:
  84. DUMP OF SERVICE search:
  85. DUMP OF SERVICE sec_analytics:
  86. DUMP OF SERVICE secontroller:
  87. DUMP OF SERVICE sensorservice:
  88. DUMP OF SERVICE serial:
  89. DUMP OF SERVICE servicediscovery:
  90. DUMP OF SERVICE simphonebook:
  91. DUMP OF SERVICE sip:
  92. DUMP OF SERVICE statusbar:
  93. DUMP OF SERVICE telephony.registry:
  94. DUMP OF SERVICE textservices:
  95. DUMP OF SERVICE tvoutservice:
  96. DUMP OF SERVICE uimode:
  97. DUMP OF SERVICE updatelock:
  98. DUMP OF SERVICE usagestats:
  99. DUMP OF SERVICE usb:
  100. DUMP OF SERVICE user:
  101. DUMP OF SERVICE vibrator:
  102. DUMP OF SERVICE voip:
  103. DUMP OF SERVICE wallpaper:
  104. DUMP OF SERVICE wfd:
  105. DUMP OF SERVICE wifi:
  106. DUMP OF SERVICE wifi_policy:
  107. DUMP OF SERVICE wifip2p:
  108. DUMP OF SERVICE window:
?

2、具体命令如何查看帮助

从上面可以看出Service非常多,“DUMP OF SERVICE”关键字后面的单词都可以直接通过 dumpsys + 单词 查看相关信息,具体每一个如何使用有一种通用的查看帮助的办法。

查看每一个命令的使用帮助,以下以meminfo 为例演示:

?
[plain] view plain copy
  1. shell@m:/ $ dumpsys meminfo -h
  2. dumpsys meminfo -h
  3. meminfo dump options: [-a] [--oom] [process]
  4. -a: include all available information foreach process.
  5. --oom: only show processes organized by oom adj.
  6. If [process] is specified it can be the name or
  7. pid of a specific process to dump.

3、一些关键命令解释

名字 功能
account  显示accounts信息
activity  显示所有的activities的信息
cpuinfo 显示CPU信息
window 显示键盘,窗口和它们的关系
wifi  显示wifi信息
batteryinfo $package_name 电量信息及CPU 使用时长
package packagename 获取安装包信息
usagestats 每个界面启动的时间
statusbar 显示状态栏相关的信息
meminfo
内存信息(meminfo $package_name or $pid 
使用程序的包名或者进程id显示内存信息)
diskstats  磁盘相关信息
battery  电池信息
alarm 显示Alarm信息
   
activity  - 使用adb shell dumpsys检测Android的Activity任务栈
window - 通过adb shell dumpsys命令获取当前应用的component
statusbar - 找出广告通知属于哪个应用
dumpsys statusbar | grep notification=Notification 

Andorid 系统性能优化---(22)Android性能相关常用命令收集相关推荐

  1. Android 系统性能优化(15)---Android性能优化典范 - 第3季

    Android性能优化典范的课程最近更新到第三季了,这次一共12个短视频课程,包括的内容大致有:更高效的ArrayMap容器,使用Android系统提供的特殊容器来避免自动装箱,避免使用枚举类型,注意 ...

  2. Android 系统性能优化(14)---Android性能优化典范 - 第2季

    1)Battery Drain and Networking 对于手机程序,网络操作相对来说是比较耗电的行为.优化网络操作能够显著节约电量的消耗.在性能优化第1季里面有提到过,手机硬件的各个模块的耗电 ...

  3. linux性能诊断,linux下跟性能相关的命令以及系统性能诊断

    linux下和性能相关的命令以及系统性能诊断 4.网络性能识别与分析 可以通过命令netstat,iptraf命令来识别 可以通过ifconfig,netstat连接网络基本情况 ifconfig   ...

  4. netstat-网络性能分析常用命令

    netstat-网络性能分析常用命令 netstat 实例 更多用法 其它相关操作命令 netstat netstat命令的功能是显示网络连接.路由表和网络接口信息,可以让用户得知有哪些网络连接正在运 ...

  5. node.js 使用----相关常用命令总结

    node.js 使用----相关常用命令总结 1. 下载并安装node.js 2. 设置全局模块存放的目录 2.1 查看默认配置 npm config ls 2.2 修改全局模块存放目录 npm co ...

  6. Oracle性能监控常用命令

    Oracle性能监控常用命令 --监控事例的等待 select event,        sum(decode(wait_Time, 0, 0, 1)) "Prev",      ...

  7. Android网络相关adb命令

    文章目录 Android网络相关adb命令 Android 查看网络使用情况主要的adb命令: 1.adb shell ifconfig 2.adb shell dumpsys connectivit ...

  8. Android 刷机常用命令

    Android 刷机常用命令 线刷和卡刷的区别 1.线刷和卡刷的本质区别在于recovery,刷了官方ROM的recovery.img,刷机方式就是线刷,刷了第三方中文recovery.img,刷机方 ...

  9. BT 面板控制命令 宝塔 Linux 常用命令收集整理

    文章目录 BT 面板控制命令 宝塔 Linux 常用命令收集整理 1. 安装命令 2.卸载命令 3.显示 bt 命令行操作面板 4.忘记面板密码如何修改 5.对于 bt 管理的软件的管理 BT 面板控 ...

最新文章

  1. html选择一个元素,css3选择第n个元素
  2. 【转】安全测试自学路线图
  3. 光流 | 高精度变分光流、LK-HS多项式展开的帧间估计、局部全局光流(论文翻译)及光流场与光流算法研究
  4. ubuntu启动,而且找不到win10启动项!
  5. 【java reflection】反射工具类总结
  6. pwm波程序如何实现_【优秀成果】如何做好算法与程序实现教学的知识储备
  7. 批量ping IP并检测IP延迟率和丢包率脚本
  8. VPP 命令总结(持续更新)
  9. 【Android智能硬件开发】【004】通过PackageInstaller静默安装apk
  10. 深入贯彻落实 Activity 的四种启动模式
  11. 博客园北京俱乐部置顶消息汇总(2009-03-03更新)
  12. 英语和编程到底是什么关系?
  13. 关于色环电阻的读数和功率
  14. 日本海淘转运运输方式对比及如何选择转运渠道
  15. 深度学习loss函数理解
  16. C++ fgets()函数
  17. 服务器显示器如何更换,笔记本怎么换显示器_笔记本换显示器教程-win7之家
  18. 发票查询,验证码无法刷新问题解决
  19. Hadoop 面试汇总
  20. 谈PLM和ERP的差异比较

热门文章

  1. proc_fs文件的操作
  2. 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解
  3. 开源框架openresty+nginx 实现web应用防火墙(WAF)
  4. Java 文件操作-File
  5. C#设计模式-策略者模式
  6. 双系统重装win7/Xp后如何恢复ubuntu引导--转载
  7. Javascript进阶:数据类型
  8. android.os.NetworkOnMainThreadException问题
  9. Log4Net使用手册
  10. python str模块