4、小结
在研发阶段需要不断实现 更多的工具和组件,以此系统化地提升自动化程度,以最终 提升发现问题的效率。
七、内存优化工具
除了常用的内存分析工具 Memory Profiler、MAT、LeakCanary 之外,还有一些其它的内存分析工具,下面我将一一为大家进行介绍。
1、top
top 命令是 Linux 下常用的性能分析工具,能够 实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。top 命令提供了 实时的对系统处理器的状态监视。它将 显示系统中 CPU 最“敏感”的任务列表。该命令可以按 CPU使用、内存使用和执行时间 对任务进行排序。
接下来,我们输入以下命令查看top命令的用法:
quchao@quchaodeMacBook-Pro ~ % adb shell top --help usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-d SECONDS] [-p PID,] [-u USER,] Show process activity in real time. -H Show threads -k Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID) -o Show FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE) -O Add FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default) -s Sort by field number (1-X, default 9) -b Batch mode (no tty) -d Delay SECONDS between each cycle (default 3) -n Exit after NUMBER iterations -p Show these PIDs -u Show these USERs -q Quiet (no header lines) Cursor LEFT/RIGHT to change sort, UP/DOWN move list, space to force update, R to reverse sort, Q to exit.
这里使用 top 仅显示一次进程信息,以便来讲解进程信息中各字段的含义。

整体的统计信息区
前四行 是当前系统情况 整体的统计信息区。下面我们看每一行信息的具体意义。
第一行:Tasks — 任务(进程)
具体信息说明如下所示:
系统现在共有 729 个进程,其中处于 运行中 的有 1 个,715 个在 休眠(sleep),stoped 状态的有0个,zombie 状态(僵尸)的有 8 个。
第二行:内存状态
具体信息如下所示:
- 1)、5847124k total:物理内存总量(5.8GB)
- 2)、5758016k used:使用中的内存总量(5.7GB)
- 3)、89108k free:空闲内存总量(89MB)
- 4)、112428k buffers:缓存的内存量 (112M)
第三行:swap交换分区信息
具体信息说明如下所示:
- 1)、2621436k total:交换区总量(2.6GB)
- 2)、612572k used:使用的交换区总量(612MB)
- 3)、2008864k free:空闲交换区总量(2GB)
- 4)、2657696k cached:缓冲的交换区总量(2.6GB)
第四行:cpu状态信息
具体属性说明如下所示:
- 1)、800% cpu:8核 CPU
- 2)、39% user:39% CPU被用户进程使用
- 3)、0% nice:优先值为负的进程占 0%
- 4)、42% sys — 内核空间占用 CPU 的百分比为 42%
- 5)、712% idle:除 IO 等待时间以外的其它等待时间为 712%
- 6)、0% iow:IO 等待时间占 0%
- 7)、0% irq:硬中断时间占 0%
- 8)、6% sirq - 软中断时间占 0%
对于内存监控,在 top 里我们要时刻监控 第三行 swap 交换分区的 used,如果这个数值在不断的变化,说明内核在不断进行内存和 swap 的数据交换,这是真正的内存不够用了。
进程(任务)的状态监控
在 第五行及以下,就是各进程(任务)的状态监控,项目列信息说明如下所示:
- 1)、PID:进程 id
- 2)、USER:进程所有者
- 3)、PR:进程优先级
- 4)、NI:nice 值。负值表示高优先级,正值表示低优先级
- 5)、VIRT:进程使用的虚拟内存总量。VIRT = SWAP + RES
- 6)、RES:进程使用的、未被换出的物理内存大小。RES = CODE + DATA
- 7)、SHR:共享内存大小
- 8)、S:进程状态。D = 不可中断的睡眠状态、R = 运行、 S = 睡眠、T = 跟踪 / 停止、Z = 僵尸进程
- 9)、%CPU — 上次更新到现在的 CPU 时间占用百分比
- 10)、%MEM:进程使用的物理内存百分比
- 11)、TIME+:进程使用的 CPU 时间总计,单位 1/100秒
- 12)、ARGS:进程名称(命令名 / 命令行)
从上图中可以看到,第一行的就是 Awesome-WanAndroid 这个应用的进程,它的进程名称为 json.chao.com.w+,PID 为 23104,进程所有者 USER 为 u0_a714,进程优先级 PR 为 10,nice 置 NI 为 -10。进程使用的虚拟内存总量 VIRT 为 4.3GB,进程使用的、未被换出的物理内存大小 RES 为138M,共享内存大小 SHR 为 66M,进程状态 S 是睡眠状态,上次更新到现在的 CPU 时间占用百分比 %CPU 为 21.2。进程使用的

&spm=1001.2101.3001.5002&articleId=137428689&d=1&t=3&u=fa221f3a8aa541c4b0ecb31289ce05f4)
3733

被折叠的 条评论
为什么被折叠?



