この記事は、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 サーバー/アプリケーション サーバー、通信スイッチ、統合開発環境。 |
[[328842]] 【51CTO.com クイック翻訳】世の中にはさまざまな種類の Python...
[[204973]]序文:今月、テンセント研究所とIT Juziは共同で「2017年中米人工知能ベン...
米国のハーバード大学とエモリー大学の研究者らが協力し、ヒト幹細胞から抽出した心筋細胞を使った「人工魚...
今日のデジタル時代において、データ センターは、私たちのつながった世界を動かし続けるための膨大な情報...
音声は本質的に即時の信号です。音声で伝えられる情報要素は、複数の時間スケールで進化します。空気圧の影...
3月25日〜26日、「新たな始まり、新たな発展、新たなシステム」をテーマにした第3回中国コンピュータ...
米国の調査報道サイト「ザ・インターセプト」が1月12日に報じたところによると、ChatGPTの親会社...
シャパシュとはモデルの解釈可能性と理解可能性は、多くの研究論文やオープンソース プロジェクトの焦点と...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
[[189965]]ディープラーニングはコンピュータービジョンを変革しました。現在、ほとんどの問題...
数え切れないほど多くの企業が AI 技術の研究や導入に競い合う中、多くの企業が熟練した AI チーム...
ニューラル ネットワーク (NN) は、ほぼすべての分野で創造的な方法で問題を解決するのに役立ちます...
人間の動作生成タスクは、エンターテインメント、仮想現実、ロボット工学などの分野のニーズを満たす、リア...