我有一个parser class,用于解析xml文件并将数据导入DB。在解析期间,我收集了十几个用于导入的对象(平均60_000)到一个数组中并一次插入所有这些对象。操作完成后,RAM不会回退到先前的状态。因此,经过一些解析操作后,我的RAM完全耗尽。我试图弄清楚为什么记忆不会从完成的过程中清理掉。
堆栈:
我在这个领域缺乏经验,不知道从哪里开始。所以,我感谢任何帮助。
答案 0 :(得分:0)
我希望你在每次操作后清理阵列。
此外,为什么不以较小批量解析和存储数据?
此方案已记录为“Objects in large arrays are memory leaked in Ruby”中的错误。
您可以在“Big array and memory”中找到类似的问题。
您可以尝试在操作后强制进行垃圾回收。请参阅“leaks in Ruby”。