Почему ActionController :: Metal утечка памяти? - PullRequest
3 голосов
/ 05 мая 2011

У меня есть следующий класс:


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 голосов
/ 16 июня 2011

Это было упомянуто в комментариях по рельсам о проблемах GitHub, я думаю, не так давно, вы можете найти его там. Короче говоря, это происходит потому, что переменная класса не задерживается между запросами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...