我正在尝试在非Rails应用程序中分析GC,最好使用YARV Ruby。
perftools.rb告诉我,我的大部分CPU时间花在了garbage_collector(6061(61.4%))上。
我还能够通过perftools.rb获取通过哪些方法创建的对象数量。有些方法比其他方法创建更多的对象,但它并没有极度偏斜。
我从哪里开始?是否有可能获得更详细的信息,说明为什么花费这么多时间做GC?是否有可能看到是否花费时间去除对象,或者是否花费在检查对象是否应该被垃圾收集?
我可以访问OS X Lion,Windows 7和Ubuntu 12.04。
答案 0 :(得分: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
在ruby http://bugs.ruby-lang.org/issues/2565中打开了一个错误,您可以在其中找到应用于ruby以获取这些探针的补丁,或者您可以使用已应用补丁的https://github.com/tenderlove/ruby/tree/probes。
希望这有帮助