使用Ruby获取我的进程在OSX上的内存使用情况

13

我有一个Ruby应用程序,在Linux上使用/proc文件系统获取其内存使用情况的信息。 有谁知道如何在Mac OSX上获取相同信息?task_info系统调用看起来很有前途,但是是否有Ruby可用的等效调用呢?

明确一下,我正在寻找系统调用,我不想为此启动进程(抱歉Lars!)。

3个回答

24

引自http://laurelfan.com/2008/1/15/ruby-memory-usage:

memory_usage = `ps -o rss= -p #{Process.pid}`.to_i # in kilobytes 

已验证可在Linux和OS X上运行。

此代码返回进程在内存中占用的字节数,不包括任何被交换出去的字节。

若要获取包括交换空间的总虚拟内存大小,请将 rss 改为 vsz(已在Linux下测试,但未在OSX下测试):

memory_usage = `ps -o vsz= -p #{Process.pid}`.to_i # in kilobytes 

3
参考这个答案,似乎你需要调用proc_pidinfo()。我认为没有Ruby的等效方法,所以你要么必须编写C扩展,要么使用ruby-ffi宝石。 其他来源表明Ruby 1.9.2带有内置的FFI - 但该版本未随OS X一起提供。

1

OS gem有一个rss_bytes方法,适用于Linux/Windows/OS X...


注意,由于某种原因,它返回的是千字节。 - Nakilon
1
哎呀,我用1.1.2修复了它,是字节 :) - rogerdpack
哇,那是多少年前的漏洞啊? - Nakilon
喜欢...9?:).... - rogerdpack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接