MRI 2.2 或 Rubinius 2.5.3 哪个有更好的垃圾收集

Which has better garbage collection, MRI 2.2 or Rubinius 2.5.3

MRI 2.2 自 2.1 以来对 GC 进行了一些重大改进,即增量 GC,现在它垃圾收集符号。

一个人通过升级 MRI 简单地修复了他的内存泄漏,参见 this blog post

我们不久前切换到 Rubinius,其中一个原因是我们认为它具有出色的垃圾收集功能。

Rubinius 似乎不会对符号进行垃圾回收,请参阅此 issue。现在仍然如此吗?GC-ing 符号是一个很大的改进吗?

我也在 rubinius 中读到了 concurrent GC in rubinius, which seems to address the same problem as MRI's incremental GC, i.e. removing long GC pause times. I have also seen this description of generational GC。但是,我不知道如何根据 RBX GC 调整 MRI GC 的大小。

那么有人知道哪个更好吗?

It seems that Rubinius does not garbage collect symbols, see this issue. Is this still the case and is GC-ing symbols a big improvement?

Rubinius 目前不对符号进行垃圾回收。我们最终会添加这个,但现在还有更紧迫的事情需要处理(例如支持 LLVM 3.6/MCJIT)。

符号被 GC 是否会有所改进取决于您的应用程序。如果所述应用程序正在创建大量很少使用的符号,那么可以肯定的是,它可以为您节省一些内存。解决这个问题的最佳方法是测量内存使用情况 before/after 切换到收集符号的 GC。

So does anyone know which is superior?

Rubinius 的 GC 旨在减少和缩短暂停时间(它不是 100% 并发意味着它 确实 仍然偶尔暂停一切)并且旨在精确(意思是它确切地知道要收集什么而不是丢失的对象)。这是否会再次产生出色的垃圾收集取决于您 运行.

的应用程序类型