起動時に、node.jsアプリは約200MBのメモリを使用するようです。しばらくそのままにしておくと、約9MBに縮小します。
アプリ内から:
私が尋ねる理由は、一時的に処理される多くのファイルをディスクからロードすることです。これにより、おそらくメモリ使用量が急増します。しかし、GCが実行されるまで、さらにファイルをロードしたくはありません。そうしないと、メモリが不足するリスクがあります。
助言がありますか ?
_--expose-gc
_フラグを使用してノードプロセスを起動した場合、global.gc()
を呼び出して、ノードにガベージコレクションを実行させることができます。ノードアプリ内の他のすべての実行は、GCが完了するまで一時停止されるため、あまり頻繁に使用しないでください。パフォーマンスに影響することに注意してください。
コード内からGC呼び出しを行うときにチェックを含めて、フラグなしでノードを実行した場合に問題が発生しないようにすることができます。
_try {
if (global.gc) {global.gc();}
} catch (e) {
console.log("`node --expose-gc index.js`");
process.exit();
}
_
ノードを使用すると、ガベージコレクションを手動でトリガーできます。これは、Nodeを_--expose-gc
_フラグ(_node --expose-gc index.js
_)で実行することで実現できます。
ノードがそのモードで実行されると、プログラムからglobal.gc()
を呼び出すことで、いつでもプログラムでガベージコレクションをトリガーできます。
元-
_// Force garbage collection every time this function is called
try {
if (global.gc) {global.gc();}
} catch (e) {
console.log("`node --expose-gc index.js`");
process.exit();
}
_