数据导入期间内存泄漏

时间:2016-01-25 18:11:13

标签: ruby-on-rails ruby memory-leaks xml-parsing

我有一个parser class,用于解析xml文件并将数据导入DB。在解析期间,我收集了十几个用于导入的对象(平均60_000)到一个数组中并一次插入所有这些对象。操作完成后,RAM不会回退到先前的状态。因此,经过一些解析操作后,我的RAM完全耗尽。我试图弄清楚为什么记忆不会从完成的过程中清理掉。

堆栈:

  • ruby​​ 2.2.1
  • rails 4.2.4
  • nokogiri 1.6.6.2
  • activerecord 4.2.4
  • activerecord-import 0.10.0

我在这个领域缺乏经验,不知道从哪里开始。所以,我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我希望你在每次操作后清理阵列。

此外,为什么不以较小批量解析和存储数据?

此方案已记录为“Objects in large arrays are memory leaked in Ruby”中的错误。

您可以在“Big array and memory”中找到类似的问题。

您可以尝试在操作后强制进行垃圾回收。请参阅“leaks in Ruby”。