このリンクでは、次のように述べられています。
これらの一時停止は、ヒープを圧縮してスペースを解放するという必然的な要件の結果です。コレクターはさまざまな戦略を使用してこれらのイベントを遅らせますが、商用利用可能なすべてのコレクターで圧縮は避けられません。
アプリケーションのメモリ フットプリントを一定に保つ場合、GC コンパクションが発生する必要はないという印象を受けました。つまり、オブジェクトの追加と収集を続ける場合にのみ発生します。十分な空き領域がある十分な大きさのヒープがある場合、穴を作成していない (つまりゴミを生成していない) のに、なぜ圧縮する必要があるのでしょうか?
Java アプリケーションのメモリ フットプリントを一定に保つのは簡単ではないことは理解していますが、適切なプロファイリング ツール、ブートストラップ、規律があれば可能です。
では、一定のメモリ フットプリントがあれば、Java アプリケーションは GC によるレイテンシなしで、つまり GC の一時停止なしで実行できると仮定するのは合理的ではないでしょうか?
EDIT:一定のメモリフットプリントとは、steady state
Ajay Georgeが述べたように、オブジェクトが作成または逆参照されない場合を意味します。オブジェクトを作成し続けると、最終的にメモリ不足になり、オブジェクトを逆参照し続けると、最終的に GC がトリガーされます。したがって、最終的な目標は、起動、ウォームアップ、完全な GC の実行を強制してから、運用時間の安定状態に入るということです。