我有一个Ruby应用程序(在Linux上)使用/ proc文件系统来获取有关其内存使用情况的信息。有谁知道如何为Mac OSX获取相同的信息? task_info系统调用看起来很有前途,但有没有相同的Ruby可用?
要清楚,我正在寻找一个系统调用,我不想为此启动一个过程(对不起Lars!)。
答案 0 :(得分:21)
取自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
答案 1 :(得分:3)
参考this answer,您似乎需要致电proc_pidinfo()
。我认为没有Ruby等价物,所以要么你必须编写C-extension或使用ruby-ffi gem。
Other sources表示Ruby 1.9.2附带内置FFI - 但该版本不随OS X一起提供。
答案 2 :(得分:0)
OS gem有一个适用于Linux / windows / OS X的rss_bytes方法......