2013-03-11 16 views
8

googleによると、V8は「世の中の世代を超えた正確なガベージコレクタ」を採用して効率的なガベージコレクションを使用しています。主張の一部は、V8がガベージ・コレクション・サイクルを実行するときにプログラムの実行を停止することです。Node.jsのガベージコレクタ

明らかな問題は、プログラムの実行を一時停止するときに、効率的なGCを得る方法です。

このトピックについては、node.jsサーバーを1秒間に何回もthounsands要求が発生した場合に、GCが応答時間にどのように影響するかを知りたいと思っています。

どれでも専門家の助けを借り、個人的な経験やリンクが大幅

をいただければ幸いです

答えて

12

「効率的な」ありがとういくつかのことを意味することができます。ここでは、おそらく高いスループットを指しています。応答時間を見ると、待ち時間に興味があります。これは代替GC戦略よりも悪化する可能性があります。

メイン選択肢停止 - 世界のためのGCは、一時的にミューテータに制御が戻って渡す前に収集サイクルを終了し、そして

  • 同時のGCいる必要はありません

    • インクリメンタルGCの、あります(仮想的に)を同時にのように動作させ、非常に短時間だけ中断します(例えば、スタックをスキャンする)。

    ヒープの同時変更(たとえば、新しいオブジェクトが作成され、既にスキャンされたオブジェクトにアタッチされている場合など)には、両方とも追加の作業を行う必要があります。これは総スループットに影響を及ぼします。つまり、ヒープ全体を実際にクリーニングするには時間がかかります。そのメリットは、プログラムが非常に長い間(通常は)割り込みされないため、レイテンシが低いということです。

    V8のドキュメントはまだストップ世界コレクタに言及しているが、たまにプログラムの実行を停止しない一方で、2011年以来のV8 GC is incrementalだから、それはプログラムを停止ない をしているようですただし、ヒープ全体をスキャンするのに時間がかかります。代わりに、数ミリ秒間スキャンして、プログラムを再開させることができます。

    "突然変異子"はヒープがガベージコレクションされたプログラムのGC用語です。

    少なくとも、これはおそらく設定可能です。

  • 関連する問題