VisualVM で Java プログラムを監視しているときに、ガベージ コレクターの動作に興味深いパターンがあることに気付きました。「通常の」ガベージ コレクションの実行を行った直後に、GC が 2 回目の CPU 集中型の実行を行うことがよくありますが、追加の効果はないようです (より積極的な実行後の使用済みヒープは、軽いランの後です)。
ガベージ コレクターの実行とそれに対応するヒープ使用量の変更を確認できる VisualVM の出力を示しました。
私の質問は、基本的にガベージコレクターがここで何をしているのか、そしてその理由は何ですか? 十分な空きメモリがあり、より軽い実行に対して目に見える利点がない場合に、これらの本当に CPU を集中的に使用する実行を試みる原因は何ですか? それとも、グラフを誤解していますか?
プログラムのパフォーマンスは実際には影響を受けません。ただ興味があるだけです。