Javaで複数のガベージコレクターを使用する理由

Aditya:

私のマシンで開始するすべてのJavaプロセスには、デフォルトで2つのガベージコレクターがあるようです。JConsoleで確認しています。

例-現在実行中のEclipseの場合。

PS MarkSweep

Collection Count - 221
Collection Time - 102118
Memory Pool Names - java.lang.String[4]

PSスカベンジ

Collection Count - 241
Collection Time - 2428
Memory Pool Names - java.lang.String[2]

プールが重複していると思います。同じプール(エデン、サバイバー、古い世代)を使用する場合、2つのガベージコレクターはどのように連携しますか?プール間のオブジェクトの移動に重複はありませんか(2番目のアルゴリズムが呼び出されたときの1つの生存者から別の生存者への移動のように)?そうでない場合でも、プールごとに複数のコレクターが必要なのはなぜですか?

GCに関するこの記事を読みましたメジャーGCとマイナーGCが異なるために異なるコレクターを使用することについて言及していますが、同じプールで複数のコレクターを使用することについての言及はないようです。

Dave Webb:

プールが重複していると思います。

この仮定は間違っています。PS Scavengeは若い(eden、survivor)世代で使用され、PS MarkSweepは古い世代で使用されます。唯一の「重複」とは、PS Scavengeがオブジェクトを古い世代に移動し、PS MarkSweepがそれらを処理できるようにすることです。

異なるプールに異なるガベージコレクターを用意する利点は、Edenプール内のオブジェクトに対して適切に機能するアルゴリズムが、古い世代のオブジェクトに対して必ずしも適切に機能するとは限らないことです。

この記事では、さまざまなガベージコレクターが連携して動作するためのさまざまなオプションについて説明します。

オブジェクトを古い世代に移動するスペースがないときに発生する「主要な」コレクションに関する限り、Sunのこの(明らかに古い)ホワイトペーパーは次のように述べています。

...若い世代の収集アルゴリズムは実行されません。代わりに、古い世代の収集アルゴリズムがヒープ全体で使用されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JVMは複数のガベージコレクタを使用しますか?

分類Dev

ガベージコレクターを無効にする理由

分類Dev

ガベージコレクターがCPUの90%を使用している理由を理解するにはどうすればよいですか?

分類Dev

Prometheus、実際のJavaガベージコレクタのメモリ使用量を取得する方法は?

分類Dev

Javaでのガベージコレクションを理解する

分類Dev

Javaで完全なガベージコレクションをトリガーするものは何ですか?

分類Dev

Javaでのガベージコレクターの作業

分類Dev

ガベージコレクターを支援するコードの記述方法

分類Dev

Java 7のG1ガベージコレクターがコンカレントマークフェーズを中止する原因は何ですか?

分類Dev

Java ConcurrentMarkSweepガベージコレクターがすべてのガベージを削除しない

分類Dev

同じ名前の複数のローカル変数を使用する場合のガベージコレクション

分類Dev

Javaのガベージコレクターとは何ですか?

分類Dev

Javaのガベージコレクターメソッドの使用とは何ですか?

分類Dev

Javaガベージコレクターを無効にするにはどうすればよいですか?

分類Dev

Javaが使用しているガベージコレクターを確認する方法

分類Dev

マルチコアマシンのCMSガベージコレクターでシングルスレッドを使用するのはいつですか?

分類Dev

ガベージコレクターを収集またはアンロードするのは誰ですか

分類Dev

ガベージコレクタがメモリを再利用する前にすべてのスレッドを停止する理由

分類Dev

GC(ガベージコレクター)によるガベージコレクションのオブジェクトをマークする方法

分類Dev

Perlのガベージコレクターを無効にする方法は?

分類Dev

再帰関数を使用したJavaでのガベージコレクション

分類Dev

再帰関数を使用したJavaでのガベージコレクション

分類Dev

ガベージコレクターを効果的に使用するには、Javaで例外を保持する方がよいでしょうか。

分類Dev

Java G1ガベージコレクターが大量のメモリを消費する

分類Dev

PHPを使用して複数のデータベース間でレコードをコピーする

分類Dev

Spark2.3でG1GCガベージコレクターを使用する

分類Dev

Javaのガベージコレクターがオブジェクトを移動する場合、Object.hashCodeおよびSystem.identityHashCodeとは何ですか?

分類Dev

リモートjmxURLのJavaですべてのガベージコレクタMXBeanを取得するにはどうすればよいですか?

分類Dev

Javaのガベージコレクターは先に進み、ループ内で宣言された変数を処理しますか?

Related 関連記事

  1. 1

    JVMは複数のガベージコレクタを使用しますか?

  2. 2

    ガベージコレクターを無効にする理由

  3. 3

    ガベージコレクターがCPUの90%を使用している理由を理解するにはどうすればよいですか?

  4. 4

    Prometheus、実際のJavaガベージコレクタのメモリ使用量を取得する方法は?

  5. 5

    Javaでのガベージコレクションを理解する

  6. 6

    Javaで完全なガベージコレクションをトリガーするものは何ですか?

  7. 7

    Javaでのガベージコレクターの作業

  8. 8

    ガベージコレクターを支援するコードの記述方法

  9. 9

    Java 7のG1ガベージコレクターがコンカレントマークフェーズを中止する原因は何ですか?

  10. 10

    Java ConcurrentMarkSweepガベージコレクターがすべてのガベージを削除しない

  11. 11

    同じ名前の複数のローカル変数を使用する場合のガベージコレクション

  12. 12

    Javaのガベージコレクターとは何ですか?

  13. 13

    Javaのガベージコレクターメソッドの使用とは何ですか?

  14. 14

    Javaガベージコレクターを無効にするにはどうすればよいですか?

  15. 15

    Javaが使用しているガベージコレクターを確認する方法

  16. 16

    マルチコアマシンのCMSガベージコレクターでシングルスレッドを使用するのはいつですか?

  17. 17

    ガベージコレクターを収集またはアンロードするのは誰ですか

  18. 18

    ガベージコレクタがメモリを再利用する前にすべてのスレッドを停止する理由

  19. 19

    GC(ガベージコレクター)によるガベージコレクションのオブジェクトをマークする方法

  20. 20

    Perlのガベージコレクターを無効にする方法は?

  21. 21

    再帰関数を使用したJavaでのガベージコレクション

  22. 22

    再帰関数を使用したJavaでのガベージコレクション

  23. 23

    ガベージコレクターを効果的に使用するには、Javaで例外を保持する方がよいでしょうか。

  24. 24

    Java G1ガベージコレクターが大量のメモリを消費する

  25. 25

    PHPを使用して複数のデータベース間でレコードをコピーする

  26. 26

    Spark2.3でG1GCガベージコレクターを使用する

  27. 27

    Javaのガベージコレクターがオブジェクトを移動する場合、Object.hashCodeおよびSystem.identityHashCodeとは何ですか?

  28. 28

    リモートjmxURLのJavaですべてのガベージコレクタMXBeanを取得するにはどうすればよいですか?

  29. 29

    Javaのガベージコレクターは先に進み、ループ内で宣言された変数を処理しますか?

ホットタグ

アーカイブ