[英]How to profile garbage collection in Ruby
我正在嘗試在非Rails應用程序中分析GC,最好使用YARV Ruby。
perftools.rb告訴我,我的大部分CPU時間都花在了garbage_collector(6061(61.4%))上。
我還能夠通過perftools.rb獲取通過哪些方法創建的對象數量。 有些方法比其他方法創建更多的對象,但它並沒有極端偏斜。
我從哪里開始? 是否有可能獲得更詳細的信息,說明為什么花費這么多時間做GC? 是否可以查看是否花費時間去除對象,或者是否花費在檢查對象是否應該被垃圾收集?
我可以訪問OS X Lion,Windows 7和Ubuntu 12.04。
在osx上你有dtrace。 YARV ruby中有dtrace提供者。
您可以使用幾個與GC相關的探針:
gc-begin gc-end gc-mark-begin gc-mark-end gc-sweep-begin gc-sweep-end
我認為他們可以幫助您找到程序中GC的功能。 看看這個文件,看看如何使用它們: https : //github.com/tenderlove/ruby/blob/probes/test/dtrace/test_gc.rb 。
這篇文章有更多解釋: http : //tenderlovemaking.com/2011/06/29/i-want-dtrace-probes-in-ruby.html
在ruby http://bugs.ruby-lang.org/issues/2565中打開了一個錯誤,您可以在其中找到適用於ruby的補丁以獲取這些探針,或者您可以使用https://github.com/tenderlove/ruby / tree / probes已應用補丁的位置。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.