在Java 9中,G1 GC是默认的垃圾收集器。截至目前,我听说G1GC上的some people preferring CMS garbage collector似乎不稳定,并且存在一些令人讨厌的错误。
ParallelGC发生了什么事(最近没有嗡嗡声?有没有什么用例比起CMS / G1,我们更希望使用ParallelGC?
而且,在任何情况下SerialGC都可以执行所有这些并行收集器吗?
主要用于单CPU机器。
算法:
它使用单个线程来处理堆,并在任何gc期间执行世界暂停。只是将其视为玩具。
这是客户端类计算机的默认设置(Windows或单CPU计算机上的32bit jvm)>。
算法:
它使用多个gc线程来处理堆,并在任何gc期间执行世界停顿暂停。
<= Java 8
,这是服务器级计算机(多CPU类的Unix计算机或任何64位jvm)的默认设置。
旨在消除与并行和串行收集器的完整gc相关的长时间停顿。
算法:
它使用1个或多个gc线程来定期扫描旧的一代,并丢弃未使用的对象,暂停时间很短,但是使用了更多的cpu时间。
这是低暂停/服务器风格的gc,主要用于大堆(> 4Gb)。
算法:
由于Java 9
,这是服务器级计算机(多CPU类的Unix计算机或任何64位jvm)的默认设置。
主要原因是减少gc暂停时间,尽管可能会降低整体吞吐量。
使用序列号:-只有1个CPU可用,没有暂停要求-一台机器上存在小型JVM(超过CPU数量)-小型实时数据集(小于100MB)