web-dev-qa-db-ja.com

Java 8のデフォルトガベージコレクター

Java 8のデフォルトのガベージコレクターは何ですか?

JMX Beanをチェックすると、JMX Beanが新しい世代のパラレルコレクターであり、古い世代の古いシリアルコレクターであることがわかります。

77
Code Junkie

デフォルトのガベージコレクター:

  • Java 7-並列GC
  • Java 8-並列GC
  • Java 9-G1 GC
  • Java 10-G1 GC
104
x4444

(特に)デフォルトのガベージコレクターを選択することは、JVMの 人間工学 プロセスと呼ばれるものです。このプロセスは、マシンのクラスに依存します。

  • 2つ以上の物理プロセッサと2 GB以上の物理メモリ(プラットフォームに関係なく)を備えたマシンとして定義されたサーバークラスのマシンの場合、デフォルトのガベージコレクタは パラレルコレクタ (別名スループットコレクター)。
  • Windowsまたはシングルプロセッサマシン上の32ビットプラットフォームとして定義されているクライアントクラスマシンの場合、デフォルトのガベージコレクタはシリアルコレクタです。

実質的にすべてのマシンには2つ以上のCPUがあるため、マシンは事実上常にJVMによってサーバークラスと見なされます。そのため、パラレルコレクターを既定のガベージコレクターと見なす多くの参照が見つかります。

72
Tunaki

Javaには4種類のガベージコレクター(バージョン10まで)がありますが、Java 11の安定リリース後は5種類になります。これらは:-

  1. シリアルガベージコレクター-S GC
  2. 並列ガベージコレクター-P GC
  3. CMSガベージコレクター-CMS GC
  4. G1ガベージコレクター-G1 GC
  5. Zガベージコレクター-ZGC

JavaのGCのデフォルト実装-

JVM GC

 Java 7 - P GC       
 Java 8 - P GC
 Java 9 - G1 GC
 Java 10- G1 GC
 Java 11- Z GC(I am not sure but it would be default GC of Java 11)

ZGCの詳細については、ご覧ください

http://openjdk.Java.net/projects/zgc/

https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/

注:JVMで現在使用されているGCを確認する場合は、次のコマンドを使用してデフォルトGCを表示できます。

$ Java -XX:+PrintCommandLineFlags -version 

必要に応じてGCを設定する場合は、次のコマンドでこれを実行できます。ここでは、G1 GCをデフォルトGCとして設定します。

$ Java -XX:+UseG1GC -XX:+PrintCommandLineFlags -version 

enter image description here

For more details , please visit 

https://javapapers.com/Java/types-of-Java-garbage-collectors/

https://alvinalexander.com/Java/java-jvm-how-show-which-garbage-collector-running

34
Brajesh