And*_*imm 5 ruby profiling garbage-collection yarv
我正在尝试在非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已应用补丁的位置。
希望这可以帮助