7

一般に (Oracle/sun および MS のような他のサード パーティからの標準 JVM 実装があることを認識しているため)、JVM は、ガベージ オブジェクトを収集するデーモンとして実行されるガベージ コレクション スレッドを 1 つだけ作成しますか、または JVM は複数のスレッドを生成しますか?ガベージコレクションを達成するための1つのスレッド?

4

3 に答える 3

6

で有効化され、デフォルトのコレクターである「スループットコレクター」-XX:+UseParallelGCは、複数のスレッドを使用します。で有効化された「同時低ポーズ コレクター」-XX:+UseConcMarkSweepGCは、同時コレクターに 1 つのスレッドを使用しますが、そのストップ ザ ワールド コレクションは並列です。

めったに使用されないシングル スレッド GC だけ-XX:+UseSerialGCがシングル スレッドです。

http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

于 2012-06-15T14:05:54.343 に答える
1

-XX:ConcGCThreads=n -- 並行ガベージ コレクタが使用するスレッドの数。デフォルト値は、JVM が実行されているプラ​​ットフォームによって異なります。

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#G1Options

より多くのガベージ コレクター スレッドが存在する可能性がありますが、それらの数、実行シーケンスなどに依存するべきではありません。ただし、信頼できる重要なものがあります。例: Object.finalize()は一度だけ呼び出されます。

質問については、ガベージコレクタのチューニングもチェックしてください。

http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html#1.1.%20Types%20of%20Collectors%7Coutline

于 2012-06-15T14:07:20.307 に答える
1

Oracle の Garbage-First GC アルゴリズム (Java 8 で使用可能で、Java 9 のデフォルト オプション) は並列/同時 GC アルゴリズムであるため、複数のスレッドが関与します。具体的には、ガベージ コレクションに使用されるスレッドがいくつかあります。

  • ParallelGC Threads は、「stop the world」コレクション フェーズで使用されるスレッドです。
  • 並列マーキング スレッド (または同時 GC スレッド) は、領域をクリーンアップの候補としてマークし、アプリケーション スレッドを停止せずに実行するために使用されるスレッドです。
  • G1 コンカレント リファインメント スレッドは、個々のリージョンの記憶された参照セットへの変更をマークする責任があります。

G1GC は設定によって有効にすることができます-XX:+UseG1GC(その時点で Java 7 G1GC で利用可能でしたが、信頼性が低いため、本番環境では使用しないでください (Java 7 はサポートが終了しているため、本番環境では使用しないでください)。また))。

ソースhttps://blogs.oracle.com/g1gc/entry/g1gc_faqおよびhttp://www.oracle.com/technetwork/articles/java/g1gc-1984535.html

于 2016-12-09T06:16:54.163 に答える