ホームページ > Java > &#&チュートリアル > Java のガベージ コレクターの種類

Java のガベージ コレクターの種類

PHPz
リリース: 2024-08-30 15:54:06
オリジナル
567 人が閲覧しました

Java ガベージ コレクターのタイプは、プログラムの開発に使用するタイプを定義します。ガベージ コレクションは Java の重要な機能です。 Java では、ガベージ コレクションを使用して、使用されなくなったメモリを解放します。ガベージ コレクターは、まだ使用されているすべてのオブジェクトを追跡し、残りのオブジェクトをガベージとしてマークします。ガベージ コレクターは、スイープおよびマーク アルゴリズムを使用します。

Java では、ガベージ コレクションはメモリの管理に他なりません。 JVM を使用して同じことを行っています。ガベージ コレクションを使用すると、プログラマがオブジェクトの割り当てと割り当て解除を処理する必要がなくなります。 Java では、アプリケーションはオペレーティング システムを使用してメモリの割り当てと解放を行い、アプリケーションから同じものを提供し、新しい変数のガベージ コレクションを提供します。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Java は、アプリケーションのさまざまなニーズを満たす複数のガベージ コレクターを提供します。アプリケーションに適切なガベージ コレクターを選択することは、アプリケーションのパフォーマンスを向上させるために非常に重要です。 Java は、アプリケーションのニーズを満たすために複数のタイプのガベージ コレクターを提供します。

Java のガベージ コレクターの種類

重要なポイント

  • Java の並列 GC は、JVM で使用されるデフォルトのガベージ コレクターとして知られています。並列 GC の動作はシリアル GC と同じです。
  • シリアルガベージコレクターはシングルスレッドの環境に合わせています。 GC に単一スレッドを使用します。

Java ガベージ コレクター の種類

以下は Java ガベージ コレクターの種類です。

次のように、要件に従ってこれらの型を使用しています。

  • シリアルガベージコレクター
  • パラレルガベージコレクター
  • 同時マーク スイープ ガベージ コレクター
  • G1 ガベージ コレクター
  • イプシロンガベージコレクター
  • Z ガベージ コレクター
  • シェナンドーのガベージコレクター

各ガベージ コレクターの動作とパフォーマンスは異なります。それにはそれぞれの長所と短所が含まれています。 Java では、JVM で使用されるガベージ コレクターを選択できます。ガベージコレクタの選択時に、JVMの引数を渡す必要があります。

1.シリアルガベージコレクター

このガベージ コレクターは、アプリケーションのすべてのスレッドを保持しながら動作します。したがって、アプリケーションのスレッドはシリアル ガベージ コレクターのプロセスを使用することによってフリーズすると言えます。このプロセスはワールドとして知られており、イベントを停止します。サーバー環境でシリアル ガベージ コレクターの使用を許可するために、単純なプログラムでも同じものを使用できます。

シリアル ガベージ コレクターを使用するには、JVM の引数に –XX:+UseSerialGC を実行する必要があります。シリアルガベージコレクター使用時に指定できます。

2.パラレルガベージコレクター

パラレル GC とシリアル GC の唯一の違いは、パラレル GC は複数のスレッドを使用するのに対し、シリアル GC は単一のスレッドのみを使用することです。アプリケーションのスループットを高速化するために並列 GC を使用しています。これはスループット コレクターとしても知られています。

並列ガベージ コレクターを使用するには、JVM の引数で –XX:+UseParallelGC を使用する必要があります。 Java アプリケーションを開発する際には、パラレルおよびシリアル ガベージ コレクターが不可欠です。

3. CMS ガベージ コレクター

CMS GC では、ヒープとスキャンに使用される複数のスレッドを使用しており、マークされたインスタンスの削除をマークします。このタイプの GC では、GC 時にアプリケーション スレッドがフリーズされません。ガベージ コレクターのスレッドはアプリケーション スレッドと並行して実行されています。

このガベージ コレクターを使用すると、複数の CPU を使用してアプリケーションのスループットを向上させることができます。使用する CPU がさらに多い場合は、CMS GC を使用します。 CMS ガベージ コレクターを使用するには、JVM の引数に –XX:+UseParNewGC を使用する必要があります。このガベージ コレクターを使用するときは、この Java 仮想マシン引数を使用します。

4. G1 ガベージ コレクター

G1 ガベージ コレクターは、4 GB を超えるメモリが含まれる場合に使用されます。この GC はヒープを同じサイズのチャンクに分割し、優先度に従って並列ガベージ コレクションを実行します。 G1 ガベージ コレクターは、グローバル マーキング フェーズを示しています。

マーキング フェーズの完了中に、このガベージ コレクターはガベージ コレクターのオブジェクトを含む情報を収集します。 G1 ガベージ コレクターを使用するには、JVM の引数に –XX:+UseG1GC を使用する必要があります。

5.イプシロン ガベージ コレクター

これはパッシブまたは非動作のガベージ コレクターです。このガベージ コレクターはアプリケーションにメモリを割り当てますが、未使用のオブジェクトは収集しません。アプリケーションがヒープを使い果たすと、JVM がシャットダウンするため、この GC によりアプリケーションがメモリ不足になるかクラッシュする可能性があると言えます。

このガベージ コレクターの主な目的は、アプリケーションのパフォーマンスを管理および測定することです。このガベージ コレクターには、プログラム内で実行されていた複雑なプログラムが含まれています。

6. Z ガベージ コレクター

このガベージ コレクターは、アプリケーションの実行を停止することなく、すべての作業を同時に実行します。このガベージ コレクターは、数テラバイトのサイズを含むヒープを処理します。

このタイプのガベージ コレクターは、スレッドへのサイクルを実行します。平均 1 ミリ秒でアプリケーションが一時停止されます。

7.シェナンドー ガベージコレクター

このタイプのガベージ コレクターは、どのオブジェクトが使用されなくなったか、どのオブジェクトが圧縮の準備ができたかを管理するためにメモリ領域を使用します。このガベージ コレクターは、指定されたオブジェクトに対する制御アクセスを使用する転送ポインターをすべてのヒープに追加します。

JVM 引数

以下は Java 仮想マシンの引数です。これらの引数をガベージ コレクターで次のように使用します。

  • –XX:ParallelGCThreads=: この引数は GC スレッド数を制御します。
  • –XX:MaxGCPauseMillis=: この引数は、最大一時停止時間を指定します。
  • –XX:GCTimeRatio=: この引数は、最大スループット目標を指定します。
  • –XX:+UseSerialGC: この引数はシリアル ガベージ コレクターを指定します。
  • –XX:+UseParallelGC: この引数は、並列ガベージ コレクターを指定します。
  • –XX:+UseG1GC: この引数は、G1 ガベージ コレクターを指定します。
  • –XX:+UseConcMarkSweatGC: この引数は、CMS ガベージ コレクターを指定します。
  • –XX:ParallelCMSThreads: この引数は、使用する CMS コレクターとスレッドの数を指定します。
  • -XX:InitiatingHeapOccupancyPercent=: この引数は、同時サイクルの開始時のヒープ占有量を制御します。
  • -XX:G1MixedGCLiveThresholdPercent=: ライブ オブジェクトが古いリージョンに存在する場合、この引数は GC オブジェクトからその値を除外します。
  • -XX:G1HeapWastePercent=: この引数は、廃棄が許可される領域の数を指定します。

結論

Java は、さまざまなアプリケーションのニーズを満たすさまざまなガベージ コレクターを提供します。アプリケーションのパフォーマンスを向上させるには、アプリケーションに適切なガベージ コレクターを選択することが不可欠です。 Java ガベージ コレクターのタイプは、プログラムの開発時に使用するガベージ コレクターのタイプを定義します。 Java にはガベージ コレクションと呼ばれる重要な機能があります。

以上がJava のガベージ コレクターの種類の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート