最近、開発用にhttps://github.com/lloyd/node-memwatchをインストールして、GCが私のプログラムとどのように相互作用するかを調査しました。
イベント「stat」をバインドしました。arthor は、GC が実行されたときにイベントがトリガーされると述べています。
スクリプトが高負荷の場合にそれが見つかりました。「統計」イベントはトリガーされません。GC が実行されていないことを意味するかどうかはわかりませんが、GC がトリガーされていない可能性があることを示しています。
私の運用サーバーでは、負荷は 1 日を通してさらに高くなります。GC が実行される可能性はないと確信しています。メモリ使用量が減少する可能性はありません。メモリリークと同じです。
- 私の観察は正しいですか?負荷が高い状態が続くと GC が実行できなくなるのですか?
- もしそうなら、公開された GC インターフェイスを使用して GC を強制する必要がありますか?
- GC がブロックされていますか? GC が各 GC で長時間ブロックされないように、GC をより頻繁に実行する必要がありますか?
手動 GC はお勧めできません (node.js で手動 GC のアイデアに反対する人がいますが、参照用のリンクが見つかりません) が、メモリ使用量が継続的に増加していることがわかります。それは本当に解決する必要があります。