ruby-on-rails - 在 Ruby 中,将非常大的局部变量复制到实例变量会重复内存需求

标签 ruby-on-rails ruby heroku

我正在将一些非常大的多维哈希值传递给报 TableView 。因为我使用的是 Heroku,所以我过度运行了我的内存分配。因为我必须复制这些变量来传递它们,所以我将这个要求加倍了。我正在考虑使用 Redis 来存储和访问变量,但这是一项重大的工作。在传递这些变量时我是否遗漏了什么,以至于我不会在过程中复制它们?

report.rb 的调用是:

message = KacMailer.daily_report(@associates, @managers, @assoc_wi_mgr, @assoc_sort, @issues, @items, @keys)

kac_mailer 然后复制变量以将它们传递给报告 View :(编辑:添加局部变量赋值给 nil)

  def daily_report(associates, managers, assoc_wi_mgr, assoc_sorted, issues, items, keys)
    @associates   = associates
    associates    = nil
    @managers     = managers
    managers      = nil
    @assoc_wi_mgr = assoc_wi_mgr
    assoc_wi_mgr  = nil
    @assoc_sorted = assoc_sorted
    assoc_sorted  = nil
    @issues       = issues
    issues        = nil
    @items        = items
    items         = nil
    @keys         = keys
    keys          = nil

    support_mail = mail(to: $kac.support, subject: 'Daily Report', from: $kac.support) do |format|
      format.html { render 'kac_mailer/daily_report' }

    end
  end

最佳答案

这里没有重复,只有引用——不会重复数据。

复制意味着创建大型结构的克隆/副本。再次引用数据只会添加新的引用。

关于ruby-on-rails - 在 Ruby 中,将非常大的局部变量复制到实例变量会重复内存需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32553003/

相关文章:

ruby - 用于逐像素读取图像的 RMagick/ImageMagick 替代品

CSS 与 Heroku 上的本地显示不一样

postgresql - 如何将文件名传递给 Heroku pg :sql command?

ruby-on-rails - (Time.now.utc.to_date + 1.month + 15.days) != (Time.now.utc.to_date + 15.days + 1.month)

javascript - Rails、Canvas 和 Javascript - 将图像从 Flickr 转换为灰度

ruby-on-rails - 当有重音符号时,activerecord 中按字母顺序不区分大小写排序

ruby - 导轨 : Multiple options into a single string

ruby-on-rails - Capistrano 'Bundle Not Found' 部署期间出错

javascript - 如何在不进行轮询的情况下从我的 Ruby REST/CRUD API 持续更新我的 ReactJS 客户端?

heroku - 为什么 Heroku-accounts 插件不再工作,而且我不再能够在 CLI 中在多个帐户之间切换?