如果我们的专案是用纯 Ruby 实作
由于 Ruby 有 GC,memory leak 的机率较低
然而,如果我们用 C/C++ 或其他的编译语言制作 Ruby extension gem
就要注意 memory leak 的议题
用 os 这个 Ruby gem,可以得到 memory usage
https://github.com/rdp/os
使用范例如下:
require 'os'
100.times do
# Run your task here
puts OS.rss_bytes
end
如果内存使用量不断上升,就有可能有 memory leak
这个模组是显示目前这只 Ruby 命令稿的内存用量
如果要查 memory leak 的位置,要自己设定呼叫的程式码区块
在 Windows 上,是透过 win32ole 来查询
但板工不太熟 OLE,有兴趣的板友可自行查询 os gem 的原始码
其实蛮短的,这里就不贴 code 了
在 POSIX 系统上,则是呼叫 ps(1) 这支外部程式来查询
经板工实测,Linux 和 OSX 上都可以用
分享给有需要的 Rubyist