我有一个消耗大量内存的 Ruby 进程,我想运行一个 shell 命令来找出我的 Ruby 进程正在使用多少内存。如果我分叉,所有的内存都会被复制到新进程中,而我的盒子不能支持这么多的内存使用。有没有办法:
- 在不分叉的情况下运行 shell 命令,或者
- 从 Ruby 中找出我的进程使用了多少内存?
我有一个消耗大量内存的 Ruby 进程,我想运行一个 shell 命令来找出我的 Ruby 进程正在使用多少内存。如果我分叉,所有的内存都会被复制到新进程中,而我的盒子不能支持这么多的内存使用。有没有办法:
您可能不想分叉,而是打开文件/proc/PID/status
,其中PID
是您的进程的进程 ID,$$
Ruby 中的变量,并阅读标记为的行VmSize
:
File.open("/proc/#{$$}/status").each { |line|
if line =~ /VmSize/
puts line
end
}
在 IRB 中运行它给了我这个:
irb(main):003:0> File.open("/proc/#{$$}/status").each { |line|
irb(main):004:1* if line =~ /VmSize/
irb(main):005:2> puts line
irb(main):006:2> end
irb(main):007:1> }
VmSize: 138972 kB