1. ホーム
  2. javascript

[解決済み] node.jsのガベージコレクタの実行を要求する方法とは?

2023-06-29 03:09:21

質問

起動時にnode.jsのアプリが約200MBのメモリを使用しているようです。しばらく放っておくと、約 9MB にまで減ります。

アプリ内から可能でしょうか。

  1. アプリが使用しているメモリの量を確認しますか。
  2. ガベージコレクタの実行を要求しますか?

私が尋ねる理由は、私はディスクから多くのファイルをロードし、それらは一時的に処理されます。これはおそらく、メモリ使用量を急増させる原因です。しかし、GC が実行されるまで、さらにファイルをロードしたくありません。そうでなければ、メモリ不足になるリスクがあります。

何か提案はありますか?

どのように解決するのですか?

ノードプロセスを起動する際に --expose-gc フラグで起動した場合、次に global.gc() を呼び出してnodeにガベージコレクションを実行させます。 GCが完了するまで、nodeアプリ内の他のすべての実行は一時停止されることに留意してください。

フラグなしでnodeが実行された場合、事態が悪化しないように、コード内からGC呼び出しを行う際にチェックを含めたいかもしれません。

try {
  if (global.gc) {global.gc();}
} catch (e) {
  console.log("`node --expose-gc index.js`");
  process.exit();
}