3
我有下面的类:为什么ActionController :: Metal会泄漏内存?
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来做出解决方法。不过,我想了解,这里发生了什么。