• 【优化】如何检测移动端 CPU 以及内存占用率


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

    如何检测移动端 CPU 以及内存占用率

    前言

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

    Android ADB 命令查看

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

    image

    - 选择列表中你需要的平台,并安装。  
    - 配置环境变量  
       打开终端,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

    image

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

    image

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

    image

    • 查看内存使用情况
      • adb shell dumpsys meminfo <package_name>adb shell dumpsys meminfo <package_id>

    image

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

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

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

    image

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

    image

    • CPU 监控如下:

    image

    Eclipse 之 DDMS

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

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

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

    image

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

    结语

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

  • 相关阅读:
    boost-1.53源代码编译
    Hive分析窗体函数之NTILE,ROW_NUMBER,RANK和DENSE_RANK
    外接圆、内切圆半径公式及相应关系知识点总结
    最小生成树之Prim算法
    JavaScript实现简单图片滚动 --9张图告诉你,C罗欲哭无泪
    Scala入门到精通——第二十七节 Scala操纵XML
    第二十一篇:基​于​W​D​M​模​型​的​A​V​S​t​r​e​a​m​驱​动​架​构​研​究
    oracle表空间查询维护命令大全之中的一个(数据表空间)史上最全
    项目流程管理&amp;&amp;架构总结
    AIX常用命令略记
  • 原文地址:https://www.cnblogs.com/shytong/p/5262585.html
走看看 - 开发者的网上家园