IBM JVM WebSphere Application Server-XX:+;使用G1GC?-Xgcpolicy:gencon是否取代?

IBM JVM WebSphere Application Server-XX:+;使用G1GC?-Xgcpolicy:gencon是否取代?,websphere,ibm-jvm,Websphere,Ibm Jvm,根据ibmlink(),可以通过设置-Xgcpolicy来指定gc策略。默认的gcpolicy是gencon(-Xgcpolicy:gencon)。WAS是9.0,JVM是IBMJ9(Java版本1.8)。 接下来,在IBM下面的链接中,gc算法的设置似乎也可以使用标志-XX,就像在其他JVM中一样。例如:-XX:+UseG1GC可以工作。 我的意图是应用像UseG1GC这样的gc行为。堆大小为-Xms16G到-Xmx20G。因此,我希望先使用Garbase,然后使用并发的G1GC。-Xgcp

根据ibmlink(),可以通过设置-Xgcpolicy来指定gc策略。默认的gcpolicy是gencon(-Xgcpolicy:gencon)。WAS是9.0,JVM是IBMJ9(Java版本1.8)。 接下来,在IBM下面的链接中,gc算法的设置似乎也可以使用标志-XX,就像在其他JVM中一样。例如:-XX:+UseG1GC可以工作。

我的意图是应用像UseG1GC这样的gc行为。堆大小为-Xms16G到-Xmx20G。因此,我希望先使用Garbase,然后使用并发的G1GC。-Xgcpolicy:gencon也做了一些类似的事情,但它导致了“停止世界”。当gc运行时,应用程序将被挂起。
有点困惑,即使我设置了-XX:+UseG1GC,它会遵循并有效地使用g1gc行为,还是会遵循-Xgcpolicy:gencon的机制?或者gcpolicy和gc算法是两件不同的事情?

在IBM JVM上使用-XX:+UseG1GC没有任何效果。它将被默默地吞下。JVM将默认为Gencon GC策略

您可以通过运行-verbose:gc来验证将使用什么样的gc策略

IBM的GC策略与Hotspot的G1GC最接近的是平衡策略,主要区别在于它们是基于区域的(与Gencon不同,Gencon有两个不同的旧对象和新对象堆区域)

就并发性而言,所有3个(G1GC、Balanced、Gencon)都是相似的:全局GC大部分是并发的,部分/本地GC是STW(停止世界)


使用基于区域的GC策略的原因是为了减少最坏情况下的暂停时间。它们能够在部分地面军事系统中增量执行某些全局类型的作战。最值得注意的是,与Gencon不同,它们可以通过可选的STW压缩操作在全局GC中对堆进行增量反分段。大多数应用程序不需要这样的全局压缩,因此Gencon是默认的。但是,如果在Gencon运行中观察到由于全局压缩而导致的长时间暂停,则应尝试平衡。但是,平衡的GC将略微影响应用程序吞吐量。

当旧一代已满且应用程序仍在分配时,所有GC都将有一个回退来执行完全垃圾收集。停止世界在所有地面军事系统中发生,花费的时间取决于算法。使用G1不会阻止停止世界,但会改变它发生的时间和时间。