3

我有以下课程:


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 来解决此问题。不过,我想了解这里发生了什么。

4

1 回答 1

0

我认为不久前在关于 github 问题的 rails 评论中提到了这一点,您可以在那里搜索。长话短说,它这样做是因为类变量不会在请求之间停留。

于 2011-06-16T17:50:12.537 回答