在类方法中记忆类的实例会导致Ruby中的内存泄漏吗?

时间:2016-09-23 16:27:23

标签: ruby-on-rails ruby memory-leaks mri

我和我的同事正在寻找Ruby on Rails应用程序中的内存泄漏,我们有一些初步指标,代码如下可能是罪魁祸首:

module Foo
  class Bar
    def self.example
      @widgets ||= ::Widget::Factory.new
    end
  end
end

我们的预感是因为self.example是一个类方法,它可能无法正确地回收Widget::Factory的memoized实例,它实际上利用了广泛的缓存。

我们相信,每当我们的一名后勤工作人员运行时,这就会导致内存泄漏。它似乎是在调动Foo::Bar的实例,但从不释放由Widget::Factory创建的对象。

有没有人对MRI的GC如何适用于这样的用例有任何见解,或者这只是一个红鲱鱼?

0 个答案:

没有答案