Linux 内存占用分析

linux 下面查看内存有多种渠道,比如通过命令 ps ,top,free, pmap 等,或者通过/proc系统。一般情况下,ps,top,pmap,free可以满足要求,如果需要比较详细和精确地知道整机内存或者某个进程内存的使用情况,可以通过/proc 系统。

使用命令

free : 显示系统可用内存以及已经使用的内存的信息

ps: 查看进程信息,静态,即当前状态

top: 查看进程信息,动态

pstree: 查看进程树

pmap: 根据进程ID查看进程信息

ps命令–提供系统过去信息的一次性快照,也就是说ps命令能够查看刚刚系统的进程信息。

top命令反应的是系统进程动态信息,默认10s更新一次。

ps和top都是从/proc目录下读取进程的状态信息,内核把当前系统进程的各种有用信息都放在这个伪目录下。

VSZ & VIRT

进程使用的虚拟内存值总量,包括所有代码,数据,共享库已经被swapped out的。VIRT = SWAP + RES。

VSZ来自ps命令, VIRT来自top命令,二者均表示进程占用的虚拟内存大小。

假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES & RSS

进程当前使用的内存大小,但不包括swap out. RES = CODE +DATA。

包含其他进程的共享

RES 来自 top 命令, RSS 来自 ps 命令,两者在表示意义上没有区别,都是从 /cat/proc/[pid]/stat 文件中读取的信息。

ps -o comm,rss 获取说有进程的rss占用大小

如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反

关于库占用内存的情况,它只统计加载的库文件所占内存大小

CODE

可执行代码占用的物理内存大小

DATA

物理内存中存放数据的大小,在程序运行中需要用到

如果top命令没有显示, 按f键显示

SHR

共享内存大小

除了自身进程的共享内存,也包含其他进程的共享内存

计算某个进程所占用物理内存的大小: RES - SHR

swap out后,该值会下降

你可能感兴趣的:(Linux 内存占用分析)