Node.js内存填满了

时间:2012-08-03 18:45:36

标签: node.js memory

我正在尝试编写一个下载大型zip文件的程序,将其解压缩到内存中,然后将内容(一系列CSV文件)推送到MongoDB。但是,我一直在点程序停止并打印

FATAL ERROR: CodeRange::GetNextAllocationBlock Allocation failed - process out of memory

当缓冲区不再使用时,我一直将缓冲区设置为null,一旦它们在Mongo中,就将记录设置为null,并防止一次处理多个文件。这些都没有帮助。是否还有释放记忆的技巧?

2 个答案:

答案 0 :(得分:10)

我会考虑的事情(不确定它是否会按预期完成):

确保引用消失:

手动执行GC并增加v8堆大小:

从父进程生成(并终止)子进程以执行工作:

这样我觉得操作系统会回收子进程的内存,即使它没有返回内存。

Ram as filesystem:

这样你可以将文件系统视为内存(让操作系统将其放入内存中)。

使用freelist:

答案 1 :(得分:0)

node.js对内存分配有1.4Gb的硬限制。但我不认为无论如何将大文件下载到内存是个好主意,我建议将文件写入磁盘,解压缩到磁盘,然后推送到MongDB。这样你总是会在内存中运行一小块数据