精确度量Linux下进程占用多少内存的方法
1个回答
展开全部
ps aux:
其中
RSS列:"Resident Set Size", 实际驻留"在内存中"的内存数. 不包括已经交换出去的代好贺厅码. 举一个例子: 如果你有一个程序使用了100K内存, 操作系统交换出40K内存, 那么RSS为60K. RSS还包括了与其它进程共享的内存区域. 这些区域通常用于libc库等.
VSZ(或VSS)列:“Virtual Set Size” 一个进程占用的总的地址空间大小. 它包括了没有映射到友隐内存中的页面。拍雹
如果查看更详细的内存使用情况, 可用以下几种方法, 或者几种方法结合使用,都需要root权限
(1). pmap -d $pid
$pid 是正在运行的程序的pid
2). cat /proc/$pid/smaps
smaps的数据比较详细,可简单的归纳一下,归纳的命令如下:
cat /proc/$pid/smaps | awk '/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}'
(3). cat /proc/$pid/maps
(4). cat /proc/$pid/statm
输出解释
第一列 size:任务虚拟地址空间大小
第二列 Resident:正在使用的物理内存大小
第三列 Shared:共享页数
第四列 Trs:程序所拥有的可执行虚拟内存大小
第五列 Lrs:被映像倒任务的虚拟内存空间的库的大小
第六列 Drs:程序数据段和用户态的栈的大小
第七列 dt:脏页数量
其中
RSS列:"Resident Set Size", 实际驻留"在内存中"的内存数. 不包括已经交换出去的代好贺厅码. 举一个例子: 如果你有一个程序使用了100K内存, 操作系统交换出40K内存, 那么RSS为60K. RSS还包括了与其它进程共享的内存区域. 这些区域通常用于libc库等.
VSZ(或VSS)列:“Virtual Set Size” 一个进程占用的总的地址空间大小. 它包括了没有映射到友隐内存中的页面。拍雹
如果查看更详细的内存使用情况, 可用以下几种方法, 或者几种方法结合使用,都需要root权限
(1). pmap -d $pid
$pid 是正在运行的程序的pid
2). cat /proc/$pid/smaps
smaps的数据比较详细,可简单的归纳一下,归纳的命令如下:
cat /proc/$pid/smaps | awk '/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}'
(3). cat /proc/$pid/maps
(4). cat /proc/$pid/statm
输出解释
第一列 size:任务虚拟地址空间大小
第二列 Resident:正在使用的物理内存大小
第三列 Shared:共享页数
第四列 Trs:程序所拥有的可执行虚拟内存大小
第五列 Lrs:被映像倒任务的虚拟内存空间的库的大小
第六列 Drs:程序数据段和用户态的栈的大小
第七列 dt:脏页数量
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询