簡體   English   中英

如何在Ruby中分析垃圾收集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM