5

大きなzipファイルをダウンロードしてメモリに解凍し、その内容(一連のCSVファイル)をMongoDBにプッシュするプログラムを作成しようとしています。しかし、私はプログラムが停止して印刷するポイントにぶつかり続けます

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

バッファが使用されなくなったときにnullに設定し、Mongoに入るとレコードをnullに設定し、一度に複数のファイルが処理されないようにしました。これはどれも役に立ちませんでした。メモリを解放するためのトリックは他にありますか?

4

2 に答える 2

10

私が考える何かは次のようになります(それがすべて希望どおりに機能するかどうかはわかりません):

参照がなくなっていることを確認してください。

GCを手動で実行し、v8ヒープサイズを増やします。

作業を行うために親プロセスから子プロセスを生成(および強制終了)します。

そうすれば、OSがメモリを返さなくても、子プロセスのメモリを再利用できると思います。

ファイルシステムとしてのRAM:

そうすれば、ファイルシステムをメモリとして扱うことができます(オペレーティングシステムにメモリに入れさせます)。

フリーリストを使用する:

于 2012-08-04T15:24:17.503 に答える
0

node.jsには、メモリ割り当てに厳しい1.4Gbの制限があります。しかし、とにかく大きなファイルをメモリにダウンロードするのは良い考えではないと思います。ファイルをディスクに書き込み、ディスクに解凍してから、MongDBにプッシュすることをお勧めします。このようにして、常にメモリ内のデータのごく一部を操作することになります

于 2012-08-03T19:06:28.617 に答える