[分享] 測量 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