ホームページ >Java >&#&チュートリアル >Java パフォーマンス最適化のための一般的なガベージ コレクターは何ですか?
私が提供した他の 2 つの記事を通じて、ガベージ コレクターについて多くのことを学ぶことができると思います。本当に注意を払う必要があり、使用する可能性があるガベージ コレクターは、次の 4 つのタイプです。
仮想タイプの client## の場合# マシンまたは
シングルコア サーバーでは、このガベージ コレクターがデフォルトのガベージ コレクターになります。マイナー GC であってもフル GC であっても、すべてのアプリケーション スレッドは一時停止されます。 Serial Old は旧世代で使用され、これもシングルスレッドの旧世代バージョンです。
は、次のフラグで表すことができます:
-XX:+UseSerialGC並列マルチスレッド ガベージ コレクターサーバー タイプの仮想マシンまたはマルチスレッド サーバー上、jdk8 のデフォルト 使用するガベージ コレクターのタイプ。 マイナー GC とフル GC はどちらもマルチスレッドを使用してガベージを収集します。どちらのタイプの GC もアプリケーション スレッドを一時停止させます。ただし、スループットが高く、応答時間に対する過度の要件がない場合には、ガベージ コレクターとして最適です。
次のフラグでステータスを確認できます:
若い世代:-XX:+UseParallelGC古い世代:
-XX:+UseParallelOldGCCMS コレクター その独自の設計は、リサイクル中にシリアルおよびパラレルコレクターによって引き起こされる長期的なシステムラグを軽減することです。 マイナー GC が発生すると、すべてのアプリケーション スレッドも一時停止されます。違いは、若い世代ではパラレルまたはシリアルを使用せず、CMS
ParNew に特別に適合した若い世代のコレクターを使用することです。
これは、次の兆候から確認できます。
-XX:+UseParNewGCCMS は、フル GC が発生したときにすべてのアプリケーション スレッドを一時停止しなくなりましたが、同時に実行するためにマルチスレッドを使用します。アプリケーションのスレッドに応じて、使用されなくなったオブジェクトをクリーンアップします。これにより、CMS ガベージ コレクターの一時停止時間が大幅に短縮されます。パレルコレクターと比較すると非常に明白です。
欠点:
serial コレクターに縮退します。
は、次のフラグを通じて表示できます。
-XX:+UseConcMarkSweepGCG1 コレクター は、
ガベージ優先コレクター ( ガベージ初め)。
論理世代である点が異なります。 G1 はヒープ領域をいくつかの領域 (リージョン) に分割します。新世代のガベージ コレクションでは、すべてのアプリケーション スレッドを一時停止して、生き残ったオブジェクトを旧世代または Survivor 領域にコピーする方法が引き続き使用されます。旧世代も多くのエリアに分割されており、G1 コレクターはオブジェクトをあるエリアから別のエリアにコピーすることでクリーンアップ作業を完了します。これにより、CMS のメモリ断片化の問題が解決されます。
次のロゴを参照してください:
-XX:+UseG1GC実際、上記の内容は簡単な説明です。実際の実装の詳細については、冒頭の記事を参照してください。 。 明示的なガベージ コレクション
ここで説明する明示的なガベージ コレクションは、実際には、以下に示すように、手動でトリガーされるガベージ コレクションを指します。
System.gc;これは、方法です。 jvm を制御して gc を持つように強制します。このメソッドをガベージ コレクションに使用することはいかなる場合でも推奨されません。 この仕様を使用すると、CMS や G1 など、どのようなガベージ コレクターであっても、Full GC が発生し、すべてのアプリケーション スレッドが同時に停止するため、長時間のラグが発生します。時間。 #例外:
#パフォーマンス分析、テスト
#ヒープ分析
以上がJava パフォーマンス最適化のための一般的なガベージ コレクターは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。