为什么ActionController :: Metal泄漏内存?

时间:2011-05-04 23:16:06

标签: ruby-on-rails-3 actioncontroller

我有以下课程:


class Myclass < ActionController::Metal
  def myaction
    huge_object.do_something
    # etc.
  end

  private
  def huge_object
    @obj ||= begin
      # allocate and initialize a ~10MB object
    end
  end
end

令我惊讶的是,即使在生产中,每次调用myaction时,都会分配对象。此外,有些东西正在引用它,因为GC不会收集它。我通过将对象包装在其他类中并在该类中包含Singleton来解决了这个问题。不过,我想了解,这里发生了什么。

1 个答案:

答案 0 :(得分:0)

这是在github问题的rails评论中提到的,我想不久前,你可以在那里搜索它。简而言之,这样做是因为类变量不会在请求之间留下来。