我正在将一些非常大的多维哈希值传递给报 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/