TL DL: 「頻繁」と「まれ」は、メモリ割り当て率とヒープ サイズに依存する相対的な用語です。正確な答えが必要な場合は、特定のアプリケーションについて自分で測定する必要があります。
アプリに 2 つのモードがあるとします。モード 1 はメモリを割り当てて計算を行い、モード 2 はアイドル状態になります。
モード 1 の割り当てが使用可能なヒープよりも小さい場合、終了するまで gc を実行する必要はありません。RAM の使用量が少なすぎて、コレクションなしでモード 1 の 2 回目のラウンドを実行できたのかもしれません。ただし、最終的に空きヒープが不足し、jvm は「まれな」コレクションを実行します。
ただし、モード 1 の割り当てが若い世代のヒープのかなりの割合であるか、それよりも大きい場合、コレクションはより「頻繁に」発生します。若い世代のコレクション中に、生き残った割り当て (モード 1 操作全体でデータが必要であると想像してください) は古い世代に昇格され、若い世代により多くの余地が与えられます。若い世代の割り当てと収集が継続できるようになりました。最終的に古い世代のヒープが不足するため、「まれに」収集する必要があります。
では、頻度はどれくらいですか?これは、割り当て率とヒープ サイズによって異なります。jvm がヒープ制限に頻繁にぶつかる場合は、頻繁に収集されます。十分なヒープ (100GB としましょう) がある場合、jvm は長い間収集する必要はありません。欠点は、最終的にコレクションを実行するときに、100GB を解放するのに長い時間がかかり、jvm が数秒 (または数分!) 停止する可能性があることです。現在の JVM はそれよりもスマートで、コレクションを強制的に実行することがあります (モード 2 が望ましい)。また、並列コレクターを使用すると、必要に応じて常に発生する可能性があります。
最終的に、頻度はタスクとヒープに依存し、さまざまな vm パラメータがどのように設定されているかにも依存します。正確な答えが必要な場合は、特定のアプリケーションについて自分で測定する必要があります。