原文  http://taobaofed.org/blog/2015/12/04/cpu-allocation-profiler/

前言

6 月底的时候淘宝众筹的 H5 接入到了支付宝钱包,上线前支付宝钱包就对性能提出了明确要求:即页面静态下 app 的 CPU 消耗要低于 10%。我面临的第一个问题并不是如何优化,而是要如何便利地查看 CPU 的占用率。CPU 占用率的有效分析对于性能优化是至关重要的。因此,本文并不会讲移动端 CPU 占用率的优化,而是讲其“前戏”——如何查看移动端的 CPU 以及内存占有率。

Android ADB 命令查看

  • 安装 JDK,下载并安装
  • 安装 SDK:
    • 下载地址,下载后的压缩包,可以解压在任意目录下,不需要安装操作。
    • 进入 android-sdk-macoxs/tools 文件夹,双击 Android 文件启动 Android SDK Manager, 如下图

- 选择列表中你需要的平台,并安装。
- 配置环境变量
打开终端,home 目录下打开 .bash_profile 文件并写入
 
export PATH=${PATH}:/Users/{{sdk 存放目录}}/android-sdk-macosx/tools
export PATH=${PATH}:/Users/{{sdk 存放目录 }}/android-sdk-macosx/platform-tools
  • 手机连接电脑开启 USB 调试模式,进入 adb shell

  • 查看 CPU 占用率

    • 查看 CPU 占用排名前 5 的程序并间隔 3 秒输出 top -m 5 -t -d 3(-m 最大数;-t 显示进程名;-d刷新间隔),如下图:

- 根据进程名查看其 CPU 占用率 `top -d 3| grep com.taobao.trip`(例如查看阿里旅行的 CPU 占用率))

  • 查看内存使用情况

    • adb shell dumpsys meminfo <package_name>adb shell dumpsys meminfo <package_id>

Android Studio 自带 CPU 和内存检测功能

Android Studio 有自带的 CPU 和内存检测功能

  • 检测是否安装 Java 虚拟机 JDK ,若没有则进行 下载并安装;若已安装,则检测版本号,低于 6 则不可用,检测方法
 
javac -version

  • 点击上图标注 1 ,在标注 2 中选择要调试的手机,标注 3 中选择要检测的应用进程,例如 ‘com.eg.android.AlipayGphone’ 即支付宝。点击标注 4 即进行内存的监控,标注 5 即是对CPU的监控。
  • 内存的监控如下:

  • CPU 监控如下:

Eclipse 之 DDMS

Eclipse 可以通过 DDMS 检测内存,但是要在 Eclipse 中检测 CPU 占用需要安装插件,我试用了插件 APT 发现并不好用,因此就不介绍了。下面介绍在 Eclipse 中通过 DDMS 检测内存使用情况。

  • 手机连接电脑开启 USB 调试模式,并打开 Eclipse

  • 点击工具栏 Window -> Open Perspective -> Other -> DDMS,如下图:

  • 标注 1 区域为当前虚拟机上的程序列表,选择要检测的程序,点击标注 3 给改程序设置 heap Updates,在标注 2 Heap 视图中点击 Cause GC 就可以看到该程序的内存使用情况。

结语

希望这篇文章能够减少同学们在检测 CPU 及内存上花费的时间,从而有更多的时间去研究如何优化的问题。

 

【优化】如何检测移动端 CPU 以及内存占用率的更多相关文章

  1. wince下的CPU和内存占用率计算

    #include <Windows.h> DWORD Caculation_CPU(LPVOID lpVoid) { MEMORYSTATUS MemoryInfo; DWORD Perc ...

  2. linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定

    背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况.一. linux ps命令,查看某进程cpu和内存占用率情况[root@test vhost]# ps auxUSER  ...

  3. linux ps命令,查看进程cpu和内存占用率排序(转)

    使用以下命令查看: ps -aux | sort -k4,4n ps auxw --sort=rss ps auxw --sort=%cpu linux 下的ps命令 %CPU 进程的cpu占用率 % ...

  4. IIS解决CPU和内存占用率过高的问题

    发现进程中的w3wp占用率过高. 经过查询,发现如下: w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运 ...

  5. 压测过程中,CPU和内存占用率很高,案例简单分析

    Q:  最近公司测试一个接口,数据库采用Mongo    并发策略:并发400个用户,每3秒加载5个用户,持续运行30分钟    数据量:8000条左右 压测结果发现:    TPS始终在5左右   ...

  6. Linux下查看CPU、内存占用率

    linux下查看最消耗CPU.内存的进程 CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 内存消耗最多的前10个进程: ps ...

  7. Linux 下用管道执行 ps aux | grep 进程ID 来获取CPU与内存占用率

    #include <stdio.h> #include <unistd.h>   int main() {     char caStdOutLine[1024]; // ps ...

  8. 【转载】Linux下查看CPU、内存占用率

    不错的文章(linux系统性能监控--CPU利用率):https://blog.csdn.net/ctthuangcheng/article/details/52795477 在linux的系统维护中 ...

  9. linux系统cpu和内存占用率

    1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...

随机推荐

  1. 批量 truncate 表

    如果某个用户下所有表或指定表中所有的数据已确定不再需要,此时可以进行批量 truncate declare cursor cur_trunc is select table_name from use ...

  2. cmd运行命令

    winver检查Windows版本 dxdiag检查DirectX信息 mem.exe显示内存使用情况 Sndvol32音量控制程序 sfc.exe系统文件检查器 gpedit.msc 组策略 reg ...

  3. 解决Error creating bean with name 'huayuanjingguanDaoimp' defined in file [D:\apache-tomcat-7.0.52\webapps\landscapings\WEB-INF\classes\com\itheima\landscaping\dao\imp\huayuanjingguanDaoimp.class]: Invo

    问题描述: 10:23:13,585 ERROR ContextLoader:307 - Context initialization failedorg.springframework.beans. ...

  4. android免root hook框架legend

    一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...

  5. Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版

    Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版 阅读:  评论:  作者:Rybby  日期:  来源:rybby.com Adobe 家的 Il ...

  6. 基于Quartz.net的远程任务管理系统 一

    在上一篇绪中,已经介绍了整个项目的情况下了,接下来就是开始一步步做起来了. 首先:先整个我们的Job任务表,以及Job执行日志表.SQL如下: drop table if exists job_inf ...

  7. JS获取用户的Ip地址

    在网站中通常需要获取使用者的ip地址,获取抵制的方式有很多,这里就简单介绍一下js获取用户ip地址 /*使用的新浪的ip查询api,根据返回的数据进行判断*/ <script src=" ...

  8. .net core grpc consul 实现服务注册 服务发现 负载均衡(二)

    在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...

  9. .Net Core WebApi返回的json数据,自定义日期格式

    基本上所有的人都在DateTime类型的字段,被序列化成json的时候,遇到过可恨的Date(1294499956278+0800):但是又苦于不能全局格式化设置,比较难受.以往的方式,要么使用全局的 ...

  10. s11 day100路飞项目逻辑购物车一

    Luffy项目 先看练习,如下: 一. 添加购物车和查看 1. url url(r'^shoppingcar/$', shoppingcar.ShoppingCarView.as_view({&quo ...