【问题标题】:How to monitor garbage collection when running Cucumber?运行 Cucumber 时如何监控垃圾收集?
【发布时间】:2014-08-18 03:02:04
【问题描述】:

我试图为 Ruby Cucumber 获取详细的 GC 信息,就像为 JVM 获取的一样。 但我不确定如何进行。 我见过GC.collectionsGC.dump,但我不知道如何使用它们。 如果有人遇到过同样的问题,请告诉我如何获取 GC 转储或 GC 统计信息或 Cucumber 测试的详细 GC。

【问题讨论】:

  • 我从未见过GC.collectionsGC.dump。你在哪里看到的?

标签: ruby garbage-collection automation cucumber ui-automation


【解决方案1】:

查看 Ruby 的 GC 工作的最简单方法是使用 GC::Profiler。您可以通过在 features/support/gc.rb 中添加类似这样的内容来将其与黄瓜一起使用:

Before do
  GC::Profiler.enable
  GC.start
end

After do
  puts GC::Profiler.report
end

如果您想要更详细的信息,假设您使用的是 MRI (C Ruby),您可以从 GC.stat 获取垃圾收集统计信息。您可以在每个 Cucumber 场景之后打印来自 GC.stat 的信息,方法是在 features/support/gc.rb 中添加类似内容:

After do
  puts "GC: total #{GC.stat[:count]}, major #{GC.stat[:minor_gc_count]}, minor #{GC.stat[:minor_gc_count]}"
end

不同版本的 Ruby 有不同的垃圾回收,所以GC.stat 返回不同的信息。 The GC.stat rdoc 没有记录每个哈希键的含义。 A blog post by Sam Saffron 记录了 GC.stat 的 Ruby 2.0 哈希键(并说 this SO answer 不准确)。 A blog post by Thorsten Ball 记录 GC.stat 用于 Ruby 2.1 的哈希键。

【讨论】:

  • 谢谢,它以表格形式生成数据,但我仍然看不到不同字段的具体文档。
  • AFAIK Ruby 不记录 GC 统计信息。这就是我链接到博客文章的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2017-08-25
  • 2017-03-02
  • 1970-01-01
  • 2019-06-07
  • 2011-05-14
相关资源
最近更新 更多