文章目录

  • 内存相关概念解析
  • dumpsys meminfo
  • procrank
  • cat /proc/meminfo
  • free
  • vmstat

内存相关概念解析

一个进程占用了多少内存,主要有下述四种说法:

  1. VSS(Virtual Set Size),虚拟内存。RSS + 未分配实际物理内存

    单个进程可访问的全部虚拟内存地址空间,其大小包括未实际申请的物理内存。

  2. RSS(Resident Set Size),物理内存。USS + 包含共享库

    单个进程实际占用的内存大小,RSS不太准确的地方在于它包括该进程所使用共享库全部内存大小。对于一个共享库,可能被多个进程使用,实际该共享库只会被装入内存一次。

  3. PSS(Proportional Set Size),物理内存。USS + 按比例包含共享库

    PSS相对于RSS计算共享库内存大小是按比例的。N个进程共享,该库对PSS大小的贡献只有1/N。

  4. USS(Unique Set Size),物理内存。进程独占的内存

    单个进程私有的内存大小,即该进程独占的内存部分。USS表示运行一个特定进程的真实内存增量大小,如果进程终止,USS就是实际被返还给系统的内存大小。

dumpsys meminfo

查看指定进程的内存信息:dumpsys meminfo [pid]

Applications Memory Usage (in Kilobytes):
Uptime: 2455033 Realtime: 2455033Pss  Private  Private  SwapPss     Heap     Heap     HeapTotal    Dirty    Clean    Dirty     Size    Alloc     Free------   ------   ------   ------   ------   ------   ------Native Heap      212      184       28    36524        0        0        0Dalvik Heap        0        0        0        0        0        0        0Stack        4        0        4      740Other dev        9        0        0        0.so mmap    36266       16    35460     5740Other mmap       12        0        8       52Unknown       64       36       28     6708TOTAL    86331      236    35528    49764        0        0        0App SummaryPss(KB)------Java Heap:        0Native Heap:      184Code:    35476Stack:        0Graphics:        0Private Other:      104System:    50567TOTAL:    86331       TOTAL SWAP PSS:    49764

Android heap上的内存分为两块:native和dalvik。dalvik就是我们平常说的java堆,Java对象分配占据的内存;Native代码分配的内存,虚拟机和Android框架分配内存。

procrank

获取所有进程的内存使用的排行榜,排行是以Pss的大小而排序。procrank命令比dumpsys meminfo命令,能输出更详细的VSS/RSS/PSS/USS内存指标。

  PID       Vss      Rss      Pss      Uss     Swap    PSwap    USwap    ZSwap  cmdline2572  4757048K  280016K  156987K  147300K    8916K     145K       0K      37K  com.bbk.launcher22548  4276448K  293992K  153739K  140888K    8852K     151K       8K      39K  com.android.systemui1037  4887848K  272952K  138643K  128120K   17688K    9001K    8852K    2328K  system_server3492  1321548K  132312K   51964K   46528K    7004K     476K       0K     123K  com.vivo.globalsearch......RAM: 7801436K total, 3109936K free, 9560K buffers, 2247508K cached, 3468K shmem, 836080K slab

USS是进程独自占用的物理内存(不包含共享库占用的内存),它是一个非常非常有用的数字, 揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止, USS 就是实际被返还给系统的内存大小。
USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加。

cat /proc/meminfo

查看系统的详尽内存信息,包含内核情况

MemTotal:        7801436 kB      //总内存
MemFree:         3104012 kB     //空闲内存
MemAvailable:    5242416 kB
Buffers:            9560 kB     //给文件的缓冲大小
Cached:          2249552 kB
SwapCached:         8640 kB
Active:           792860 kB
Inactive:        2345844 kB
Active(anon):     419236 kB
Inactive(anon):   466352 kB
Active(file):     373624 kB
Inactive(file):  1879492 kB
Unevictable:        3260 kB
Mlocked:            3260 kB
SwapTotal:       2097148 kB
SwapFree:        1808416 kB
Dirty:                64 kB     //等待被写回到磁盘的大小
Writeback:             0 kB
AnonPages:        878096 kB
Mapped:           851592 kB
Shmem:              3468 kB
Slab:             836120 kB
SReclaimable:     121448 kB
SUnreclaim:       714672 kB
KernelStack:       48836 kB
PageTables:        71760 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5997864 kB
Committed_AS:   108413340 kB
VmallocTotal:   263061440 kB    //虚拟内存大小
VmallocUsed:           0 kB
VmallocChunk:          0 kB
CmaTotal:         299008 kB
CmaFree:          199368 kB
RSCISF:           261120 kB
RSCIBF:           110560 kB
NR_KMALLOC:        19840 kB
NR_VMALLOC:        80372 kB
NR_DMA_NOR:            0 kB
NR_DMA_CMA:        95548 kB
NR_ION:           161148 kB
free_ion:          10092 kB
free_ion_pool:     10092 kB
free_ion_heap:         0 kB
NR_GPU:           136452 kB
free_gpu:          21896 kB
o0a1r0:              120 kB
o1a1r0:            21776 kB
o4a0r256:              0 kB
o8a0r32:               0 kB
zram_size:         74708 kB
pcppages:           3788 kB
ALL_MEM:         7778432 kB

free

查看可用内存,缺省单位KB。该命令比较简单、轻量,专注于查看剩余内存情况。数据来源于/proc/meminfo。

                total        used        free      shared     buffers
Mem:       7988670464  4812099584  3176570880     3551232     9789440
-/+ buffers/cache:     4802310144  3186360320
Swap:      2147479552   295645184  1851834368

vmstat

不仅可以查看内存情况,还可以查看进程运行队列、系统切换、CPU时间占比等情况,另外该指令还是周期性地动态输出。

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa3  0 1243544 400116 12276 5343880   9   19    41    53    1  465 12 12 76  0

参数列总共15个参数,分为4大类:

  • procs(进程)

    • r: Running队列中进程数量
    • b: IO wait的进程数量
  • memory(内存)
    • swpd: 虚拟内存使用大小
    • free: 空闲内存大小
    • buff:用作buffer的内存大小
    • cache: 用作cache的内存大小
  • IO:
    • bi: Blocks received from a block device (blocks/s).
    • bo: Blocks sent to a block device (blocks/s).
  • system(系统)
    • in: 每秒的中断次数(包括时钟中断)
    • cs: 每秒上下文切换的次数
  • cpu(处理器)
    • us: user time
    • ni: nice time
    • sy: system time
    • id: idle time
    • wa: iowait time
    • ir: interrupt time

参考:
http://gityuan.com/2016/01/02/memory-analysis-command/
https://www.cnblogs.com/arnoldlu/p/9375377.html

Android 查看内存命令总结相关推荐

  1. 如何用命令行查看服务器型号,服务器查看内存命令行

    服务器查看内存命令行 内容精选 换一换 为了更有效地利用内存空间,提升Carbon查询效率,可以启用索引缓存服务器(IndexServer).IndexServer将索引缓存从Carbon查询的应用中 ...

  2. linux 内存 参数,linux free命令参数及用法详解(linux查看内存命令)

    linux free命令参数及用法详解(linux查看内存命令) 2019年05月31日 | 萬仟网科技 | 我要评论 free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段 ...

  3. android+查看内存容量apk,如何检查 Android 应用的内存使用情况

    注意:本篇文章是本人阅读相关文章所写下的总结,方便以后查阅,所有内容非原创,侵权删. 目录 解析日志信息logcat 使用DDMS查看堆的更新Heap 使用DDMS跟踪内存分配Allocation T ...

  4. GDB下查看内存命令(x命令)

    可以使用examine命令(简写是x)来查看内存地址中的值.x命令的语法如下所示: x/<n/f/u> <addr> n.f.u是可选的参数. n是一个正整数,表示需要显示的内 ...

  5. android查看内存使用情况

    1.cat /proc/meminfo MemTotal: 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)MemFree: LowFree与HighFree的总和Buffers ...

  6. android 如何 查看内存使用详情,android 查看内存使用情况

    对android 内存分析比较好的Blog: 主要介绍 1.进程的地址空间. 2.进程内存空间和RAM之间的关系. 3.Android中的进程. 4.Android中进程的堆内存. 5.Android ...

  7. Android 查看内存使用工具 (procstats)

    对于应用开发来说,简单的看应用内存有没有问题,就可以使用这个工具procstats. 跑上几个小时monkey,然后用工具dump一下就对内存的使用就了然于胸 文章翻译自 http://source. ...

  8. linux查看内存命令(查看进程虚拟内存)free命令、vmstat命令、pmap命令(free指令、vmstat指令、pmap指令)

    文章目录 查看系统内存状态 free命令 vmstat命令 pmap pmap命令 查看系统内存状态 查看系统内存情况的方式有很多,free. vmstat等命令都可输出当前系统的内存状态,需要注意的 ...

  9. ubuntu 查看内存命令

    原文链接:https://blog.csdn.net/jzp12/article/details/7560450 Linux中使用free可以查看系统内存使用状态, 默认单位为KB为单位,在此我以MB ...

最新文章

  1. java opengl es_Java-Android-使用openGL ES绘制3D然后绘制2D
  2. k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)
  3. 【python】nuitka封装python
  4. wkhtmltopdf:wkhtmltopdf(将html转换成pdf的利器)简介、安装、使用方法详细攻略
  5. b 计数器位选信号 verilog_Verilog HDL菜鸟学习笔记———三、Verilog常用语法之一...
  6. MVC View 中 html 属性名与关键字冲突问题的分析与解决
  7. linux下Hbase的常用shell命令
  8. 项目管理学习总结(17)——关于前后端分离的分析
  9. 项目管理学习总结(14)——优秀技术Leader应该具备什么哪些方面的能力
  10. matlab如何记录时间,求助:在MATLAB里如何输入时间序列中的时间
  11. java string debug_java 中 string 对象
  12. 施乐s2110进入维修模式_施乐进入维修模式步骤
  13. 自动采集小说程序源码
  14. 数据库学习——SQL之SELECT查询语句
  15. 正确姿势使用arm-linux-androideabi-addr2line
  16. 起早贪黑几个月,我写完了人生第一本书!
  17. SQL - 数据查询语句之字符串拆分
  18. [WIN32]MessageBox用法
  19. c语言编程新思路知道答案,C语言编程新思路知道答案公众号
  20. Android 8内测版本,安卓qq v8.0.8内测版

热门文章

  1. 平衡二叉树(Java实现)
  2. TTL怎么计算拉电流和灌电流_配电线路安全电流如何计算?低压供电线路导线怎么选择?图文详解...
  3. linux编辑conf,Linux:我如何编辑resolv.conf
  4. 常用到的Eclipse快捷键
  5. 深度分析这一年「AI大咖」,最重要的跳槽原因是……
  6. 追风逐日,Wi-SUN助推新能源数字化
  7. 了解适用于Android应用程序的本机,WebView和混合模板
  8. 如何调整照片的大小?电脑怎么修改图片大小尺寸?
  9. 【风马一族_mysql】mysql基本指令
  10. JOOQ 踩坑和评价