【发布时间】:2014-01-26 17:52:13
【问题描述】:
我有十个users,每个都有数千个(计数正好是 98956、6954、159732、0、40176、541819、218012、52380、93203 和 432)path 项目。我需要遍历每个user,并使用他们的paths。我发现每次迭代都会增加内存使用量,而在只有少数用户之后,我使用了超过 1 GB 的 RAM。
我已将代码简化为仅收集paths,但仍然会出现过多的内存使用:
User.find_each do |user|
points = user.paths.map { |path| [path.latitude, path.longitude, path.id] }
end
顺便说一句,我也遇到了delayed_job 的内存使用过多问题,我为每个用户分配了一份工作。因此,与其用User.find_each do |user| 收集多个用户,不如用user = User.find(id) 抓住一个用户。内存使用量随着作业的增加而增长,直到最终延迟_作业退出(而且我无法找到与此相对应的任何日志记录 - 它只是消失了)。
我可以做些什么来管理内存使用情况?
我正在使用 ruby-1.9.3-p484 和 Rails 3.2.16
【问题讨论】:
-
你使用的是什么版本的 Ruby?
标签: ruby-on-rails memory memory-management rails-activerecord delayed-job