VSS是单个进程全部可访问的地址空间,其大小可能包括还尚未在内存中驻留的部分。对于确定单个进程实际内存使用大小,VSS用处不大。...RSS是单个进程实际占用的内存大小,RSS不太准确的地方在于它包括该进程所使用共享库全部内存大小。对于一个共享库,可能被多个进程使用,实际该共享库只会被装入内存一次。...进而引出了PSS,PSS相对于RSS计算共享库内存大小是按比例的。N个进程共享,该库对PSS大小的贡献只有1/N。 USS是单个进程私有的内存大小,即该进程独占的内存部分。...USS揭示了运行一个特定进程在的真实内存增量大小。如果进程终止,USS就是实际被返还给系统的内存大小。 综上所属,VSS>=RSS>=PSS>=USS。 给你画张图来给你看: ? 1....sudo procrank查看各进成的VSS/RSS/PSS/USS占用情况。 procrank通过解析/proc/kpagecount来计算每个进程占用的内存。
ok,现在我把上述测试程序改成私有匿名映射 这时再来看下内存的使用情况 我们可以看到,只有 used 增加了1G,而 buff/cache 并没有增长;说明,在进行匿名私有映射时,并没有占用 cache...这时来看下内存的使用情况: 从上述结果,我们可以看出,只有buff/cache增长了1G,即当进行共享匿名映射时,这时是从 cache 中申请内存,道理也很明显,因为父子进程共享这块内存,共享匿名映射存在于...4、系统回收内存 当系统内存不足时,有两种方式进行内存释放,一种是手动的方式,另一种是系统自己触发的内存回收,先来看下手动触发方式。...如果要写的数据不再内存中,则判断是否在swap 中,如果在,则先读取出来,用新数据覆盖老数据并标为脏,如果即不在内存也不在磁盘,则新生成一个 pagecache 存储用户数据。...之前在提及 OOM 时,说道 redis 因为 OOM 被杀死,如下: 第二句后半部分, total-vm:186660kB, anon-rss:9388kB, file-rss:4kB 把一个进程内存使用情况
,很明显,哪个进程占用的内存最多,即最可能被杀死,但事实是这样的吗?...ok,现在我把上述测试程序改成私有匿名映射 ? 这时再来看下内存的使用情况 ?...4、系统回收内存 当系统内存不足时,有两种方式进行内存释放,一种是手动的方式,另一种是系统自己触发的内存回收,先来看下手动触发方式。...如果要写的数据不再内存中,则判断是否在swap 中,如果在,则先读取出来,用新数据覆盖老数据并标为脏,如果即不在内存也不在磁盘,则新生成一个 pagecache 存储用户数据。...第二句后半部分, total-vm:186660kB, anon-rss:9388kB, file-rss:4kB 把一个进程内存使用情况,用三个属性进行了说明,即所有虚拟内存,常驻内存匿名映射页以及常驻内存文件映射页
,很明显,哪个进程占用的内存最多,即最可能被杀死,但事实是这样的吗?...ok,现在我把上述测试程序改成私有匿名映射 这时再来看下内存的使用情况: 我们可以看到,只有 used 增加了1G,而 buff/cache 并没有增长;说明,在进行匿名私有映射时,并没有占用 cache...这时来看下内存的使用情况: 从上述结果,我们可以看出,只有buff/cache增长了1G,即当进行共享匿名映射时,这时是从 cache 中申请内存,道理也很明显,因为父子进程共享这块内存,共享匿名映射存在于...4、系统回收内存 当系统内存不足时,有两种方式进行内存释放,一种是手动的方式,另一种是系统自己触发的内存回收,先来看下手动触发方式。...之前在提及 OOM 时,说道 redis 因为 OOM 被杀死,如下: 第二句后半部分, total-vm:186660kB, anon-rss:9388kB, file-rss:4kB 把一个进程内存使用情况
1 测试程序 为了验证进程的私有内存、共享内存使用情况,写了个简单的http server,主要代码如下。 1....2)申请50M的私有内存后,可以看到私有内存所在的内存段,Rss/Pss分别占用50M左右 ? ? 3)分别申请100M、200M的共享内存,其中有100M由进程共享。...结论:smaps中记录了进程的各个内存段,其中Rss=私有内存+共享内存,Pss=私有内存+共享内存/共享进程数,Rss中的共享内存会被重复计算。...启动后rss为2M左右,等于(3M-2M)2,即私有内存量进程数,与top命令、smaps计算的私有内存量基本一致: cgdelete memory:httpMockcgcreate -g memroy...综上所述,当我们考虑进程的内存使用量时,如果关注是否会触发oom,则主要看memory.stat的rss部分即可,但rss并不能反映共享内存的使用情况;如果要关注进程的私有内存+共享内存占用情况,则可以主要看
/proc/meminfo一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是诸如free,top和ps这些与内存相关的工具的信息来源。...它同时也可以提供一个带有CPU和内存使用情况的进程视图。...$gnome-system-monito 5.htophtop命令是一个基于ncurses的交互式的进程视图,它实时展示了每个进程的内存使用情况。...它可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小和脏页面大小。你可以横向或者纵向滚动进程列表进行查看。...例如,按照RSS降序排序: $psaux--sort-rss 10.smemsmem命令允许你测定不同进程和用户的物理内存使用状况,这些信息来源于“/proc”目录。
2)free命令 free-h 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。 used列显示已经被使用的物理内存和交换空间。...buff/cache列显示被buffer和cache使用的物理内存大小。 available列显示还可以被应用程序使用的物理内存大小。 Swap行(第三行)是交换空间的使用情况。...,查看进程的内存映像信息。...Dirty: 脏页的字节数(包括共享和私有的)。 Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)。...writeable/private:进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小。 1.首先使用/top/free/ps在系统级确定是否有内存泄露。
从进程的角度来看,它有一个私有的内存空间,它只能看到映射到它的一个虚拟地址的物理页帧。 进程虚拟地址空间的大小取决于处理器架构。...尽管交换是让进程运行的极好的方法,但它却慢的要命。与使用物理内存相比,应用程序使用交换的速度可以慢到一千倍。如果系统性能不佳,确定系统使用了多少交换通常是有用的。...这为我们提供了另一种方法来释放正在运行的系统上的内存,并有效地使用我们拥有的内存。swap的缺点是,与RAM相比,大多数存储设备都非常慢。在内存中进行换出和换出会显著降低系统的速度。...对于每个进程视图,你可以使用/proc/pid/maps.这个文件详细说明了分配给进程的每个内存段,包括共享/私有干净内存和脏内存的大小。...vm.dirty_background_ratio = 10 :系统总内存和脏页的百分比,即内存可以填充“脏数据”的百分比。
02 进程内存使用情况分析 最常用的两个命令 ps 和 top,虽然很简单的两个命令,但还是有不少学问的。...两种方法,一种直接按 “M”(相应的按 “P” 是 CPU),另外一种是在键入 top 之后,按下 “F”,然后选择要排序的字段,再按下 “s” 确认即可。 ?...2.2 ps ps 同样可以查看进程占用内存情况,一般常用来查看 Top n 进程占用内存情况,如: ps aux --sort=rss | head -n,表示按 rss 排序,取 Top n。...RSS:实际占用内存大小。 Dirty:脏页大小。 Mapping:占用内存的文件,[anon] 为已分配的内存,[stack] 为程序堆栈 最后的 total 为统计的总值。...参考: Linux下查看内存使用情况的多种方法 http://stor.51cto.com/art/201804/570236.htm
/proc/meminfo 一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是诸如free,top和ps这些与内存相关的工具的信息来源。...它同时也可以提供一个带有CPU和内存使用情况的进程视图。....$ gnome-system-monitor 5. htop htop命令是一个基于ncurses的交互式的进程视图,它实时展示了每个进程的内存使用情况。...它可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小和脏页面大小。你可以横向或者纵向滚动进程列表进行查看。 1.$ htop 6....这个工具的功能与GNOME版本极其相似,也就是说,它同样展示了一个关于系统资源使用情况,以及带有每个进程的CPU/内存消耗情况的实时历史记录。 1.$ ksysguard
OOM全称"Out Of Memory",即内存溢出。 内存溢出已经是软件开发历史上存在了近40年的“老大难”问题。...内存溢出产生原因多种多样,当内存严重不足时,内核有两种选择: 直接panic 杀掉部分进程,释放一些内核。 大部分情况下,会杀掉导致OOM的进程,然后系统恢复。...:25129684kB, file-rss:0kB, shmem-rss:0kB 通过日志可以看出哪些进程、占用多少内存等信息,并会Kill掉占用内存较大的进程。...mysql 50032070 mysqld_safe /bin/sh /export/servers/mys 0.0 296 106308 2017 root 0 RSZ为进程占用私有内存大小...但如果设置太小会导致内存刷脏页频率增加,IO增多,从而降低性能。通常我们认为innodb_buffer_pool_size为系统内存的60%~75%最优。
本篇文章是「DevOps云学堂」与你共同进步的第 65篇 管理 Kubernetes Pod 中运行的 Java 进程的内存使用情况比人们想象的更具挑战性。...的本机内存跟踪 (NMT) 报告为我们提供了 Java 进程中内存使用情况的详细细分,尤其是内存non-heap。...结论 可以使用以下方法来解决 Java 进程内存使用的不确定性并消除 pod OOMKilled问题: 从一个合理的值开始MaxRAMPercentage,这75%通常是一个很好的起点。...随着时间的推移监控heap使用情况和系统内存WSS/RSS。...如果最大heap使用率正常(即保持远低于RSS较高且接近进程限制,请考虑减少MaxRAMPercentage为空间分配更多内存non/off-heap。
由于安卓内核是剪裁的linux基本核。所以,安卓内存底层数据规律和linux是一致的。笔者研究了其内存机制,并找到了一种合适的监控方法。先说操作,再讲原理。...如下图所示: [图片] 各个字段的含义: VmPeak:表示进程所占用最大虚拟内存大小 VmSize:表示进程当前虚拟内存大小 VmLck:表示被锁定的内存大小 VmHWM:表示进程所占用物理内存的峰值...VmRSS:表示进程当前占用物理内存的大小(与procrank中的RSS) VmData:表示进程数据段的大小 VmStk:表示进程堆栈段的大小 VmExe:表示进程代码的大小 VmLib:表示进程所使用共享库的大小...本专项中,采用5S的时间间隔,时间太短会影响CPU的真实值,因为抖动毛刺的缘故。 六、数据分析处理与结果展示 应用宝增量更新监控做完之后,我们利用python科学计算库numpy处理下文件。...1、UIAutomator框架的监控使用方法; 2、安卓CPU和内存的监控方法。 八、思考 本文除了介绍andorid的UI监控,还介绍了内存,cpu管理原理与监控方法。
写在前面 博文内容涉及 Linux 进程内存监控 监控方式包括传统工具 ps/top/pmap ,以及 cgroup 内存子系统,proc 内存伪文件系统 监控内容包括进程内存使用情况, 内存全局数据统计...所以如果通过上面的命令,查看应用实际使用的内存大小,需要查看 RES(RSS(KB单位)) 列,表示进程当前驻留在物理内存中的内存总量(即没有被交换到磁盘的部分)。...RSS 包含的内容: 进程独有的数据(如堆、栈、私有匿名页)。 + 共享内存页(如共享库、共享内存 IPC 等)。...因此 进程的 RSS 总和 可能会明显超过 系统实际的物理内存容量。真实物理内存占用 = 独占内存(RES) - 共享内存SHR(Shared Memory)。...、堆栈等所有映射区域) 25159 × 4 ≈ 100,636 KB Resident 3172 实际驻留物理内存(RSS),即当前进程使用的物理内存总量 3172 × 4 ≈ 12,688 KB
(3) Mem下一行:used为真实已占内存,free为真实可用内存。 (4)Swap:内存交换区的使用情况。...,VSZ是虚拟内存的占用,RSS是真实的内存的占用。...3列(即cpu),用“-k3”表示。...VIRT :虚拟内存 RES : 真实内存 SHR :共享内存 S :进程状态 D=不可中断的睡眠状态; R=运行; S=睡眠 ;T=跟踪/停止; Z=僵尸进程 参数: top -d 2 :每隔2秒显式所有进程的资源占用情况...top -d 2 -c -p 123456 :每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。...下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法。 1./proc/meminfo 查看RAM使用情况最简单的方法是通过 /proc/meminfo。...它还提供了一种查看CPU及内存使用情况的方法。 \$ gnome-system-monitor 5.htop htop命令显示了每个进程的内存实时使用率。...对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。 \$ nmon 9.ps ps命令可以实时的显示各个进程的内存使用情况。...你可以使用 “–sort”选项对进程进行排序,例如按RSS进行排序: \$ ps aux --sort -rss 10.smem smem命令允许你统计基于/proc信息的不同进程和用户的内存使用情况。