Java 8的默认垃圾收集器

时间:2015-10-19 03:44:50

标签: java garbage-collection java-8

Java 8的默认垃圾收集器是什么?

当我检查JMX Beans时,他们将它显示为新一代的并行收集器和旧一代的旧串行收集器。

4 个答案:

答案 0 :(得分:98)

默认垃圾收集器:

  • Java 7 - 并行GC
  • Java 8 - 并行GC
  • Java 9 - G1 GC
  • Java 10 - G1 GC

答案 1 :(得分:70)

选择默认垃圾收集器(以及其他内容)就是所谓的JVM的ergonomics进程。此过程取决于您的机器类别。

  • 对于服务器级计算机,定义为具有2个或更多物理处理器和2 GB或更多GB物理内存的计算机(无论平台如何),默认垃圾收集器为parallel collector(也称为吞吐量)集电极)。
  • 对于客户端类机器,在Windows或单处理器机器上定义为32位平台,默认垃圾收集器是串行收集器。

由于几乎所有机器都有2个或更多CPU,因此JVM几乎总是将机器视为服务器级。这就是为什么你会发现很多引用都考虑到并行收集器是默认的垃圾收集器。

答案 2 :(得分:32)

Java有四种类型的垃圾收集器(直到版本10),但是在Java 11稳定发行之后,它将是5种类型。这些是:-

  1. 串行垃圾收集器-S GC
  2. 并行垃圾收集器-P GC
  3. CMS垃圾收集器-CMS GC
  4. G1垃圾收集器-G1 GC
  5. Z垃圾收集器-ZGC

GC在Java中的默认实现-

  

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

答案 3 :(得分:-1)

从Java 9到Java 15,即使在Java 15上,G1GC也是默认的,它增加了两个新一代的Garbage收集器,一个是Oracle开发的ZGC,另一个是Sheandoah的红帽实现,都已在2020年9月15日的Java 15上投入生产。