このチュートリアルでは、いくつかの既存のゴミコレクターについて学びます。 Javaでは、Garbage Collectionは、プログラマーをメモリの割り当てやリサイクルなどの複雑なタスクに置き換えることができる自動プロセスです。この記事は、Garbage Collectionチュートリアルシリーズの3番目の記事です。前のパート2では、Javaでゴミコレクションがどのように機能するかを見ました。それは興味深い記事です。見てみることをお勧めします。最初の部分では、主にJVMアーキテクチャ、ヒープメモリモデル、いくつかのJava用語を含むJava Garbageコレクションを紹介します。
Javaには4種類のゴミコレクターがあります。
シリアルガベージコレクター
平行なゴミコレクター
同時タグスキャンガベージコレクター(CMSガベージコレクター)
G1ガベージコレクター
各タイプには独自の長所と短所があります。重要なことに、プログラムするときは、JVMを介してガベージコレクタータイプを選択できることです。 JVMにパラメーターを渡すことで選択します。各タイプは非常に異なっており、まったく異なるアプリケーションパフォーマンスを提供できます。ゴミコレクターの各タイプを理解し、アプリケーションの選択に基づいて正しい選択をすることが非常に重要です。
1。シリアルガベージコレクター
シリアルガベージコレクターは、アプリケーションのすべてのスレッドを保持することで機能します。単一のスレッド環境向けに設計されており、ガベージコレクションには単一のスレッドのみを使用し、すべてのアプリケーションスレッドをフリーズすることで機能するため、サーバー環境には適していない場合があります。シンプルなコマンドラインプログラムに最適です。
シリアルガベージコレクターは、JVMパラメーター-XX:+useSeRialgcを介して使用できます。
2。並列ガベージコレクター
平行なガベージコレクターは、SultputCollectorとも呼ばれます。これは、JVMのデフォルトのゴミコレクターです。シリアルガベージコレクターとは異なり、ガベージコレクションにマルチスレッドを使用します。同様に、ガベージコレクションを実行するときにすべてのアプリケーションスレッドをフリーズします
3.同時マークスキャンガベージコレクター
同時タグGarbage Collectionは、ヒープメモリのマルチスレッドスキャン、クリーニングする必要があるインスタンスをマークし、マークされたインスタンスのクリーンアップを使用します。同時タグガベージコレクターは、次の2つのケースでアプリケーションのすべてのスレッドのみを保持します。
タグ付きの参照オブジェクトが終身領域にある場合。
ゴミ収集中、ヒープメモリ内のデータは同時に変更されます。
同時タグスキャンガーバージコレクターは、より多くのCPUを使用して、並列ガベージコレクターよりもプログラムスループットを確保します。プログラムのパフォーマンスを向上させるために、より多くのCPUを割り当てることができれば、スキャンガベージコレクターの同時マークアップは、同時のガベージコレクターよりも優れた選択肢です。
JVMパラメーターxx: + useparnewgcを介して、同時マークスキャンガベージコレクターを開きます。
4。G1ゴミコレクター
G1ゴミコレクターは、ヒープメモリが大きい状況に適しています。ヒープメモリをさまざまな領域に分割し、ゴミを同時に収集します。 G1は、メモリを取り戻した後、残りのヒープメモリスペースを圧縮することもできます。同時スキャンは、Garbage CollectorがSTWケースのメモリを圧縮するマークです。 G1ガベージコレクションは、最初のピースで最もゴミを張るエリアを優先します。
JVMパラメーターxx:+useg1gcを介してG1ガベージコレクターを使用します
Java8の新機能
G1ガベージコレクターを使用する場合は、JVMパラメーター-XX:+UseStRingDedupplicationを使用します。重複した文字列を削除し、1つのchar []のみを維持することにより、ヒープメモリを最適化できます。このオプションはJava8u20で導入されました。
4つのJava Garbage Collectorすべてをすべて提供しました。これは、アプリケーションシナリオ、ハードウェアパフォーマンス、スループット要件に基づいて使用する必要があります。
ガベージコレクション用のJVM構成
次のJVMキー構成はすべて、Java Garbage Collectionに関連しています。
ランニングのガベージコレクターの種類
| 構成 | 説明する |
|---|---|
| -xx:+ueseSerialgc | シリアルガベージコレクター |
| -xx:+paralallelgc | 平行なゴミコレクター |
| -xx:+useconcmarksweepgc | 同時タグスキャンガベージコレクター |
| -xx:parallelcmsthreads = | 同時タグスキャンガベージコレクター=使用するスレッドの数 |
| -xx:+useg1gc | G1ガベージコレクター |
GCの最適化された構成
| 構成 | 説明する |
|---|---|
| -xms | ヒープメモリサイズを初期化します |
| -xmx | 最大ヒープメモリ値 |
| -xmn | クロニクルサイズ |
| -xx:快感 | 永続的な生成サイズを初期化します |
| -xx:maxpermsize | 永続的な生成最大容量 |
JVM GCパラメーターの使用例
Java -xmx12m -xms3m -xmn1m -xx:permsize = 20m -xx:maxpermsize = 20m -xx:+useserialgc -jar java -application.jar
要約します
上記は、この記事のJava Garbage Collectorsのタイプを簡単に理解することであり、すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!