Java G1垃圾收集器简介


如果你使用的是JDK 11或更高版本,并且不确定你使用的是什么垃圾收集器,你可能使用的是G1。自JDK 9 1以来,G1(Garbage First)垃圾收集器(GC)一直是默认的GC。 在这篇文章中,我们将简要地研究G1和一些关于如何调整它的提示。

G1 GC概述
G1最初是在JDK 7中加入的,然后在JDK 9中成为默认的GC。 G1试图平衡暂停时间和吞吐量。

G1是一个并发的、并行的GC。虽然这听起来像是我在重复自己的话,但这些是GC中不同的概念。并发指的是GC可以在应用程序运行时执行工作,尽管G1不能在应用程序运行时执行所有的工作,而且仍然有停止世界的事件。并行是指一个GC可以使用多个线程来执行其工作。

G1 GC的开发
G1仍在积极开发中。每个JDK版本都会对吞吐量、启动、暂停时间和内存占用进行若干改进。最近的变化包括。


主要计划的未来变化包括:

G1 GC调整
G1的默认配置应该在大多数情况下提供最佳性能。然而,如果你的应用程序有独特的性能要求,或者已经做了其他性能优化,可能需要对GC进行调整。G1有许多调整选项,但最有影响的是两个。

  • XX:MaxGCPauseTimeMillis - 顾名思义,设置GC可以暂停虚拟机的最大时间量。
  • -Xmx - 允许虚拟机的最大堆空间。

当你调整GC时,使用JFR等工具测量结果。