ruby-on-rails-3 - 为什么 ActionController::Metal 会泄漏内存?

标签 ruby-on-rails-3 actioncontroller

我有以下类(class):


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 包含在该类中来解决问题。尽管如此,我还是想了解这里发生了什么。

最佳答案

这个好像是前不久在github issues的rails评论里提到的,你可以去那里搜一下。长话短说,它这样做是因为类变量不会在请求之间停留。

关于ruby-on-rails-3 - 为什么 ActionController::Metal 会泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890952/

相关文章:

ruby-on-rails - 如何检查rails请求参数中是否有文件字段

ruby-on-rails - Ruby on rails 适用于 Windows 的最佳 IDE

ruby-on-rails - 事件记录/Postgres : PGError must appear in the GROUP BY clause or be used in an aggregate function

ruby-on-rails - 在 Controller 之间共享一些 before_filters

ruby-on-rails - 如何从 Controller 中包含的模块渲染js模板?

ruby-on-rails - 如何使用MongoDB中的ActionController::Live下载CSV数据?

ruby-on-rails - 如何防止rails中的垃圾邮件?

sql - 使用 Rails 和 Postgresql 迁移时不填充默认值

ruby-on-rails - 如何检查 Rails 更新操作中属性是否发生变化?

ruby-on-rails - 一种型号有多种更新表格