是否有理由手动调用垃圾收集器?

时间:2016-07-18 19:39:17

标签: ruby garbage-collection mri

有人可以给我一个关于调用GC.start是个好主意的情况的例子吗?我正在阅读GC课程文档,但我无法想象使用它的好情况......

1 个答案:

答案 0 :(得分:0)

只有在非常特殊的情况下,当您想要编写高性能代码并且您确切知道自己在做什么时。

你必须注意到虽然垃圾收集器非常方便并且保护了开发人员很多麻烦,但它总是比非垃圾收集实现慢 - 如果这些实现是正确开发的话。垃圾收集器会在一定的时间间隔内中断您的程序并在恢复程序之前进行清理。这些中断导致延迟。因此,如果您想要挤出最后一点性能,那么您可以考虑禁用自动垃圾收集和手动操作。

您还可以将垃圾收集器保持在活动模式并在任何关键操作之前手动触发它,希望它在此操作期间不会中断您的程序,因为它已经清理过。

但除非你绝对必须,否则我不会干涉这些事情。在大多数情况下,延迟几乎是不明显的,我想不出有任何与垃圾收集器有关的麻烦。它只是有效,是一个很好的工具。