2

我有一个消耗大量内存的 Ruby 进程,我想运行一个 shell 命令来找出我的 Ruby 进程正在使用多少内存。如果我分叉,所有的内存都会被复制到新进程中,而我的盒子不能支持这么多的内存使用。有没有办法:

  1. 在不分叉的情况下运行 shell 命令,或者
  2. 从 Ruby 中找出我的进程使用了​​多少内存?
4

1 回答 1

1

您可能不想分叉,而是打开文件/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
于 2013-09-25T18:45:39.887 回答