5

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

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

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

4

2 回答 2

10

我会考虑的事情是(不确定它是否会如愿以偿):

确保引用消失:

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

从父进程生成(和杀死)子进程以完成工作:

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

Ram作为文件系统:

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

使用自由列表:

于 2012-08-04T15:24:17.503 回答
0

node.js 对内存分配有 1.4Gb 的硬性限制。但是我不认为将大文件下载到内存是个好主意,我建议将文件写入磁盘,解压缩到磁盘,然后推送到 MongDB。这样,您将始终只在内存中操作小块数据

于 2012-08-03T19:06:28.617 回答