是否有意义为并发GC指定其他GC?

SyB*_*Ber 6 java parameters garbage-collection

今天我们使用并发标记扫描,如下所示:

-XX:+UseConcMarkSweepGC
Run Code Online (Sandbox Code Playgroud)

我看到一些文章建议使用此表单中的其他参数:

-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseParNewGC
Run Code Online (Sandbox Code Playgroud)

根据我的阅读,使用并发标记清除程序时会自动指定UseParNewGC,如果计算机只有1或2个CPU,则需要CMSIncrementalMode.

那么,使用这些附加参数的任何意义,考虑到我们的大多数机器都是四核的(使系统4或8可见CPU的数量)?

谢谢!

Pet*_*rey 2

当它确定可能是执行此操作的好时机时,它将-XX:+CMSIncrementalMode尝试触发并发清理。我已经使用过它,但我不相信它有帮助。

恕我直言,最有用的可能是新的大小,例如 -XX:NewSize=1g -mx2g 要么让它更大或更小,具体取决于你的短寿命对象的寿命。即您希望 eden 大小很小,但又足够大,以便对象通常在清理时被丢弃。