【问题标题】:How to profile garbage collection in Ruby如何在 Ruby 中分析垃圾收集
【发布时间】:2012-07-13 02:21:23
【问题描述】:

我正在尝试在非 Rails 应用程序中分析 GC,最好使用 YARV Ruby。

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

我还可以通过 perftools.rb 获取哪些方法创建了多少对象。一些方法创建的对象比其他方法多,但并没有特别偏斜。

我从这里去哪里?是否有可能获得有关为什么要花这么多时间进行 GC 的更详细信息?是否可以查看是否花费了时间来清除对象,或者是否花费了检查对象是否应该被垃圾回收?

我可以使用 OS X Lion、Windows 7 和 Ubuntu 12.04。

【问题讨论】:

    标签: ruby garbage-collection profiling yarv


    【解决方案1】:

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

    您可以使用几个与 GC 相关的探针:

    gc-开始 gc端 gc-标记-开始 gc-mark-end gc-sweep-开始 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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2014-02-19
      • 2016-06-14
      • 1970-01-01
      • 2011-01-21
      相关资源
      最近更新 更多