0

非常に大きなデータ チャンク (JSON.stringify の結果) をファイルに書き込もうとしています。process:exit イベント中に保存したいので、同期する必要があります。ただし、fs.writeFileSync() を使用すると、Node は次のメッセージをスローします。

FATAL ERROR: JS Allocation failed - process out of memory

fs.createWriteStream() を試してみましたが、うまくいかないようです。このコードは、中程度のデータ量で 0 バイトを出力し、大規模で同じエラーをスローします。

4

2 に答える 2

1

必要なのは「ポンプ」だと思います。http://elegantcode.com/2011/04/06/take-baby-steps-with-node-js-pumping-data-between-streams/のようなもので、カーネル バッファーが解放され、すべてを保持する必要がなくなります。ずっとテキスト。

于 2012-06-07T18:20:30.033 に答える
0

私の問題は JSON.stringify にありました。データが大きすぎて、一意の JavaScript 文字列に格納できませんでした。

この問題は、行ごとに 1 つのプロパティをシリアル化することで解決しました (そのため、JSON.stringify への呼び出しが X 回あります。ここで、X はオブジェクト内のプロパティの数です)。私のデシリアライザーは、すべてのプロパティを追加してオブジェクトを再構築します。

于 2012-07-04T23:16:02.333 に答える