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 バブルソートアルゴリズムの詳細な説明

ブログ    
ブログ    

推薦する

OpenAI、開発者向けGPTチャットボットAPIのメジャーアップデートを発表、価格を値下げ

OpenAI は本日、大規模言語モデル API (GPT-4 および gpt-3.5-turbo を...

...

ピアソンとマイクロソフトリサーチアジアが人工知能技術を活用したパーソナライズ学習の強化に協力

北京、2018 年 1 月 31 日 – 昨年の英語学習アプリ「Longman Xiaoying」の...

...

...

AIセキュリティリスクの予防と管理を強化するには、技術統合と法的規制に重点を置く必要がある

人工知能は、新たな科学技術革命と産業変革をリードする戦略的技術として、世界の主要国が科学技術の飛躍的...

KMPアルゴリズムを最初から最後まで徹底的に理解できるように指導します

[[121931]]この記事の参考文献: Li Yunqing 他著「データ構造 (C 言語版)」、...

Baidu Brain CVサービスでは、100~1000元のクーポンを提供しています。

覚えていますか? 「小都」はかつて「The Brain」の舞台でエネルギー溢れる出場者たちと競い合い...

...

人気の機械学習プログラミング言語、フレームワーク、ツール14選

[51CTO.com クイック翻訳] 増え続けるプログラミング言語ライブラリやツールの中から、機械学...

開発者にとって朗報:中国初の AI 自動脆弱性マイニング システムが公開テストを開始

最近、国家発展改革委員会は初めて「新インフラ」情報インフラの範囲を明確にした。5G、人工知能、クラウ...

次世代の自動運転システムには大規模なモデルが必要であり、システムの研究がここにある

大規模言語モデル (LLM) とビジュアル グラウンデッド モデル (VFM) の出現により、大規模...

AIを活用した超解像技術の実装

近年、ディープラーニング技術の急速な発展に伴い、AIベースの超解像技術は画像修復や画像強調の分野で幅...

あまり知られていないがプライバシーを保護するトレーニング方法:フェデレーテッドラーニング

[[261420]]ビッグデータダイジェスト制作出典: MITテクノロジーレビュー編集者: stat...