问题:Linux查看程序内存占用详情

问题:Linux查看程序内存占用详情
环境:
系统:centos 7.5
环境:

问题分析:

在linux下开发使用服务程序,经常需要查看某进程占用内存的详情,以便观察内存动态及是否泄露等情况。

解决步骤:

一、使用命令top 或者 top -p PID来进行观察,数据比较粗粒度,内存占比以百分比形式直观呈现。

二、使用命令 cat /proc/PID/status来查看,PID为当前程序或者服务的进程号。

1、查看服务或程序PID,以test服务为例,使用命令ps aux |grep test即可查看到。

2、观察proc中的内存信息,主要是以vmSize 虚拟内存大小;和vmRss 虚拟内存驻留大小来看对于内存的占用,其中vmRss可以直接理解为占用物理内存的大小。

proc信息中主要有VmSize|VmRSS|VmData|VmStk|VmExe|VmLib 这几指标,解释如下:
VmSize(KB):虚拟内存大小。整个进程使用虚拟内存大小,是VmLib, VmExe, VmData, 和 VmStk的总和。
VmRSS(KB):虚拟内存驻留集合大小。这是驻留在物理内存的一部分。它没有交换到硬盘。它包括代码,数据和栈。
VmData(KB):程序数据段的大小(所占虚拟内存的大小), 堆使用的虚拟内存。
VmStk(KB): 任务在用户态的栈的大小, 栈使用的虚拟内存
VmExe(KB):程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库
VmLib(KB) :被映像到任务的虚拟内存空间的库的大小

以test程序为例,使用下面命令可以轻松的查看test程序对于内存的占用

查看进程内存占用命令:
cat /proc/`ps -ef | grep test | grep -v grep | awk '{print $2}'`/status | grep -E 'VmSize|VmRSS|VmData|VmStk|VmExe|VmLib'

如果想要带上时间,命令如下:
cat /proc/`ps -ef | grep test | grep -v grep | awk '{print $2}'`/status | grep -E 'VmSize|VmRSS|VmData|VmStk|VmExe|VmLib' && date

如果想要长时间监控某个程序或者服务的内存占用,则可以用shell脚本来实现:

vim  mem_check.sh

#!/bin/sh
touch ./mem_check.log
echo "内存监测: " >> ./mem_check.log
while true
do
    cat /proc/`ps -ef | grep test | grep -v grep | awk '{print $2}'`/status | grep -E 'VmSize|VmRSS|VmData|VmStk|VmExe|VmLib' >> ./mem_check.log
    date >> ./mem_check.log
	echo " " >> ./mem_check.log 
    sleep 300
done


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值