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來做出解決方法。不過,我想了解,這裏發生了什麼。