JVM 世代別ガベージコレクションのプロセスとアルゴリズムの選択の図解説明

JVM 世代別ガベージコレクションのプロセスとアルゴリズムの選択の図解説明

この記事は、JVM の世代別ガベージ コレクション プロセスを紹介し、さまざまなガベージ コレクション アルゴリズムを比較するブログからの抜粋です。

世代別ガベージコレクションプロセス図

#p#

適切なガベージコレクションアルゴリズムの選択

シリアルコレクター

すべてのガベージ コレクション作業は単一のスレッドによって処理されるため、マルチスレッドのやり取りが不要になり、より効率的になります。ただし、複数のプロセッサを活用することもできないため、このコレクターはシングルプロセッサ マシンに適しています。もちろん、このコレクターは、データ量が少ない (約 100 MB) マルチプロセッサ マシンでも使用できます。これは -XX:+UseSerialGC を使用して有効にできます。

パラレルコレクター

若い世代は並行して収集されるため、ガベージ コレクションの時間が短縮されます。通常、マルチスレッド マルチプロセッサ マシンで使用されます。 -XX:+UseParallelGC でこれを有効にします。並列コレクターは J2SE 5.0 の 6 番目のアップデートで導入され、Java SE 6.0 で強化され、古い世代の並列コレクションが可能になりました。古い世代が並行コレクションを使用しない場合、デフォルトではガベージ コレクションに単一のスレッドが使用されるため、拡張機能が制限されます。 -XX:+UseParallelOldGC でこれを有効にします。

並列ガベージ コレクション スレッドの数を設定するには、-XX:ParallelGCThreads=<N> を使用します。この値は、マシン上のプロセッサの数と同じに設定できます。

このコレクターは次のように構成できます。

最大ガベージ コレクション一時停止: -XX:MaxGCPauseMillis=<N> で指定されるガベージ コレクション中の最大一時停止時間を指定します。 <N> はミリ秒です。この値を指定すると、ヒープ サイズとガベージ コレクション関連のパラメータが調整され、指定された値を達成します。この値を設定すると、アプリケーションのスループットが低下する可能性があります。

スループット: スループットは、ガベージ コレクション時間と非ガベージ コレクション時間の比率であり、-XX:GCTimeRatio=<N> で設定され、式は 1/(1+N) です。たとえば、-XX:GCTimeRatio=19 の場合、時間の 5% がガベージ コレクションに使用されることを意味します。デフォルトは 99 で、これは時間の 1% がガベージ コレクションに費やされることを意味します。

同時コレクター

これにより、ほとんどの作業が同時に実行され (アプリケーションが停止しない)、ガベージ コレクションが一時停止される時間が短くなることが保証されます。このコレクターは、応答時間の要件が高い中規模および大規模アプリケーションに適しています。 -XX:+UseConcMarkSweepGC でこれを有効にします。

同時実行コレクターは主に、古い世代の一時停止時間を短縮します。独立したガベージ コレクション スレッドを使用して、アプリケーションを停止することなく到達可能なオブジェクトを追跡します。各旧世代のガベージ コレクション サイクルでは、同時コレクターはコレクションの開始時にアプリケーション全体を一時的に一時停止し、コレクション中に再度一時停止します。 2 回目の一時停止は最初の一時停止よりもわずかに長くなり、その間に複数のスレッドが同時にガベージ コレクション作業を実行します。

同時実行コレクターは、一時停止時間を短くする代わりにプロセッサを使用します。 N 個のプロセッサを備えたシステムでは、同時収集部分ではリサイクルに K/N 個の利用可能なプロセッサが使用され、通常は 1<=K<=N/4 になります。

プロセッサが 1 つしかないホストで同時コレクターを増分モードで使用すると、一時停止時間を短縮することもできます。

浮遊ガベージ: アプリケーションの実行中にガベージ コレクションが実行されるため、ガベージ コレクションの完了時に一部のガベージが生成され、「浮遊ガベージ」が発生することがあります。このガベージは、次のガベージ コレクション サイクルでリサイクルする必要があります。したがって、並行コレクターは通常、これらの浮動ガベージ用に予約されたスペースの 20% を必要とします。

同時モードの障害: 同時コレクターはアプリケーションの実行中にコレクションを実行するため、ガベージ コレクション期間中にプログラムが使用できる十分なスペースがヒープにあることを確認する必要があります。そうしないと、ガベージ コレクションが完了する前にヒープ スペースがいっぱいになります。この場合、「同時モード障害」が発生し、アプリケーション全体がガベージ コレクションのために一時停止されます。

同時コレクターを開始します。同時コレクションはアプリケーションの実行中に実行されるため、コレクションが完了する前にプログラムが使用するのに十分なメモリ領域があることを確認する必要があります。そうでない場合、「同時モード障害」が発生します。 -XX:CMSInitiatingOccupancyFraction=<N> を設定すると、同時収集を開始するために残っているヒープの量を指定できます。

まとめ

シリアルプロセッサ:

#t#--適用可能な状況: データ量が比較的少ない (約 100 MB) アプリケーション、単一プロセッサで実行され、応答時間に対する要件がないアプリケーション。

--デメリット: 小規模なアプリケーションにしか使用できない

並列プロセッサ:

--適用可能なシナリオ: 「スループットに対する高い要件」、複数の CPU を備え、アプリケーションの応答時間に対する要件がない中規模および大規模のアプリケーション。例: バックグラウンド処理、科学計算。

--デメリット: ガベージコレクション中にアプリケーションの応答時間が長くなる可能性があります

同時プロセッサ:

--適用可能な状況: 「応答時間に対する高い要件」、複数の CPU を備え、アプリケーションの応答時間に対する高い要件がある中規模および大規模アプリケーション。例: Web サーバー/アプリケーション サーバー、通信スイッチ、統合開発環境。

<<:  VB.NET 暗号化アルゴリズムの基本概念の分析

>>:  VB.NET バブルソートアルゴリズムの詳細な説明

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

Toutiaoに加えて、テキスト推奨の成功したアプリケーション事例は他に5つあります。

テキスト推奨は、推奨システムの応用シナリオとして、商業的に実装されて成功しています。最もよく知られて...

...

...

クリスマスのギフトボックスにロボット犬を見つけますか?ボストン・ダイナミクスがイースターエッグをリリースしたが、ギフトボックスが逃げてしまった

クリスマスが近づいてきました。ボストン ダイナミクスから特別なクリスマス ギフトをお届けします。昨日...

ちょうど今、ビートルズはAIがプロデュースした「最後の」新曲をリリースした。

音楽に詳しい友人なら、ビートルズを知らない人はいないでしょう。ビートルズは、歴史上最も偉大で最も影響...

OT システムは、生成 AI によってもたらされるセキュリティ上の課題にどのように対処するのでしょうか?

現在、ほとんどのサイバー攻撃では、データの流出とデータの暗号化という 2 つの主な方法が使用されてい...

...

Amazon SageMaker を使用した機械学習モデルのトレーニングとデプロイ

[[248715]] [51CTO.com 速訳] re:Invent 2017 カンファレンスで ...

...

トレンドマイクロ:2030年までにサイバーセキュリティ分野で人工知能が人間に取って代わる

テキサス州ダラスに本拠を置くクラウドセキュリティ企業トレンドマイクロの新しい調査によると、IT業界の...

...

機械学習モデルを評価する際にデータ漏洩を防ぐ方法

この記事では、モデルのパフォーマンスを評価する際のデータ漏洩の問題と、データ漏洩を回避する方法につい...

...

世界的なAI人材不足により、各国間の協力とトレーニングが増加

文/張燕現在、世界で人工知能教育が発達している国や地域では、人工知能人材の育成を徐々に国のトップレベ...