访问Liunx下JAVA进程的内存使用情况

本文介绍了一种在Linux环境下监控进程内存使用情况的方法。通过解析/proc/进程pid/status文件,可以获取进程的实际物理内存占用情况,这对于诊断Rails应用中的内存泄漏等问题非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 监控CPU是很容易的事情,但要监控Rails进程的内存泄漏,却非常困难,原因在于production.log里面并没有记录进程的内存变化状况,甚 至你找不到任何ruby API可以用来直接查询到进程使用的物理内存。实际上,要获取一个进程的物理内存是一个平台相关的操作,每个操作系统都会自己特定的API,并不通用,即 使用C语言来编码,也不是一件容易的事情。

 

不过对于Linux操作系统来说,我们有一个捷径可以获取进程的内存状况。Linux的/proc文件系统是内核的映象,/proc/进程pid/status 文件记录了这个进程的状态信息,例如:

  1. Name:   java
  2. State:  S (sleeping)  
  3. SleepAVG:       135%  
  4. Tgid:   26645  
  5. Pid:    26645  
  6. PPid:   1  
  7. TracerPid:      0  
  8. Uid:    1002    1002    1002    1002  
  9. Gid:    100     100     100     100  
  10. FDSize: 64  
  11. Groups: 14 16 17 33 100   
  12. VmSize:   245680 kB  
  13. VmLck:         0 kB  
  14. VmRSS:    209104 kB  
  15. VmData:   205116 kB  
  16. VmStk:       824 kB  
  17. VmExe:       764 kB  
  18. VmLib:      4220 kB  
  19. Threads:        1  
  20. SigPnd: 0000000000000000  
  21. ShdPnd: 0000000000000000  
  22. SigBlk: 0000000000000000  
  23. SigIgn: 0000000000001000  
  24. SigCgt: 0000000002006e47  
  25. CapInh: 0000000000000000  
  26. CapPrm: 0000000000000000  
  27. CapEff: 0000000000000000  
Name:   dispatch.fcgi
State:  S (sleeping)
SleepAVG:       135%
Tgid:   26645
Pid:    26645
PPid:   1
TracerPid:      0
Uid:    1002    1002    1002    1002
Gid:    100     100     100     100
FDSize: 64
Groups: 14 16 17 33 100 
VmSize:   245680 kB
VmLck:         0 kB
VmRSS:    209104 kB
VmData:   205116 kB
VmStk:       824 kB
VmExe:       764 kB
VmLib:      4220 kB
Threads:        1
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000002006e47
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000



注意第14行VmRSS,记录了该进程使用的常驻物理内存(Residence),这个就是该进程实际占用的物理内存了。因此只要我们读取该文件第14行,就可以得到内存信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值