Linux 简单监控内存泄漏方法

1、status

#cat /proc/pid/status
Name:	main
Umask:	0022
State:	S (sleeping)
Tgid:	982
Ngid:	0
Pid:	982
PPid:	888
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	256
Groups:	 
NStgid:	982
NSpid:	982
NSpgid:	91
NSsid:	91
VmPeak:	  131640 kB
VmSize:	  118824 kB
VmLck:	       0 kB
VmPin:	       0 kB
VmHWM:	   80908 kB
VmRSS:	   65864 kB
RssAnon:	   59280 kB
RssFile:	    6344 kB
RssShmem:	     240 kB
VmData:	   78120 kB
VmStk:	     520 kB
VmExe:	     152 kB
VmLib:	   15924 kB
VmPTE:	     114 kB
VmPMD:	       0 kB
VmSwap:	       0 kB
Threads:	2
SigQ:	0/1823
SigPnd:	0000000000000000
ShdPnd:	0000000000000000
SigBlk:	0000000000000000
SigIgn:	0000000000001000
SigCgt:	00000001800146ef
CapInh:	0000000000000000
CapPrm:	0000003fffffffff
CapEff:	0000003fffffffff
CapBnd:	0000003fffffffff
CapAmb:	0000000000000000
Cpus_allowed:	3
Cpus_allowed_list:	0-1
voluntary_ctxt_switches:	836161
nonvoluntary_ctxt_switches:	58316

VmRSS: 65864 kB 表示应用程序正在使用的物理内存的大小

2、smaps

#cat /proc/PID/smaps | grep '^Rss:'| awk '{sum +=$2} END{print sum}'
65864

结果与status相同

#cat /proc/pid/smaps | grep 'heap' -A19
00047000-00766000 rw-p 00000000 00:00 0          [heap]
Size:               7292 kB
Rss:                6956 kB
Pss:                6956 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:      6956 kB
Referenced:         6956 kB
Anonymous:          6956 kB
AnonHugePages:         0 kB
ShmemPmdMapped:        0 kB
Shared_Hugetlb:        0 kB
Private_Hugetlb:       0 kB
Swap:                  0 kB
SwapPss:               0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB
VmFlags: rd wr mr mw me ac 

Size:表示该映射区域在虚拟内存空间中的大小。
Rss:表示该映射区域当前在物理内存中占用了多少空间      
Shared_Clean:和其他进程共享的未被改写的page的大小
Shared_Dirty: 和其他进程共享的被改写的page的大小
Private_Clean:未被改写的私有页面的大小。
Private_Dirty: 已被改写的私有页面的大小。
Swap:表示非mmap内存(也叫anonymous memory,比如malloc动态分配出来的内存)由于物理内存不足被swap到交换空间的大小。
Pss:该虚拟内存区域平摊计算后使用的物理内存大小(有些内存会和其他进程共享,例如mmap进来的)。比如该区域所映射的物理内存部分同时也被另一个进程映射了,且该部分物理内存的大小为1000KB,那么该进程分摊其中一半的内存,即Pss=500KB。

[ stack ]表示进程用到的栈空间
[ heap ]表示进程用到的堆空间
SHR ≈ RES - [heap] - [stack]

3、监控

配合watch指令进行监控,查看内存是否持续上升

watch -n 10 cat /proc/pid/smaps | grep “heap” -A19
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值