2012-07-13 47 views
5

我试图在非Rails应用程序中配置GC,最好使用YARV Ruby。如何在Ruby中配置垃圾回收

perftools.rb告诉我,我的CPU时间的大部分时间都花在garbage_collector(6061(61.4%))上。

我也可以通过perftools.rb获取使用哪种方法创建的对象数量。有些方法比其他方法创建更多的对象,但并不是非常倾斜。

我该从哪里出发?是否有可能获得更详细的信息,说明为什么花这么多时间做GC?是否有可能查看是否花费时间去除对象,或者是否花费在检查对象是否应该垃圾回收?

我可以访问OS X Lion,Windows 7和Ubuntu 12.04。

回答

1

在osx上你有dtrace。 YARV ruby​​中有dtrace提供者。

你有一对夫妇与GC探头,您可以使用的:

GC-开始 GC-结束 GC-标记开始 GC-标记结束 GC-扫开始 GC-扫描结束

我认为他们可以帮助找到你的程序中的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

有红宝石http://bugs.ruby-lang.org/issues/2565开了一个错误,你可以找到一个补丁适用于Ruby来拥有这些探头也可以使用https://github.com/tenderlove/ruby/tree/probes其中已经应用的补丁。

希望这会有所帮助