[分享] 测量 Ruby 程式码是否有 memory leak

楼主: Neisseria (Neisseria)   2016-12-05 19:09:56
如果我们的专案是用纯 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
作者: markmcm (Markmcm)   2016-12-05 22:07:00
推,不过gc释放的内存还是只有ruby能用所以还是得定期重开
作者: tonytonyjan (南洋大兜虫)   2016-12-10 00:36:00
gc 释放的内存还是只有 ruby 能用?

Links booklink

Contact Us: admin [ a t ] ucptt.com