查看JVM垃圾收集器類型

1. 使用jcmd

假設java進程id爲1000

# Linux
jcmd 1000 PerfCounter.print |grep gc.collector.*name
# Windows
jcmd 1000 PerfCounter.print |findstr gc.collector.*name

以串行收集器(-XX:+UseSerialGC )爲例,返回信息如下:

sun.gc.collector.0.name="Copy"
sun.gc.collector.1.name="MSC"

名稱與收集器對照表

名稱 收集器 作用區域 啓用參數
Copy Serial Young -XX:+UseSerialGC
MSC Serial Old Old -XX:+UseSerialGC
PSScavenge Parallel Scavenge Young -XX:+UseParallelGC
PSMarkSweep Parallel Scavenge Old -XX:+UseParallelGC -XX:-UseParallelOldGC
PSParallelCompact Parallel Old Old -XX:+UseParallelGC
PCopy ParNew Young -XX:+UseConcMarkSweepGC
或者 -XX:+UseParNewGC(JDK9起廢除)
CMS Concurrent Mark Sweep Old -XX:+UseConcMarkSweepGC (JDK9起標識爲過期,由G1接班)
G1 incremental collections G1 Young或者Young+部分Old -XX:+UseG1GC(JDK9起默認收集器)
G1 stop-the-world full collections G1 Full -XX:+UseG1GC

各Java版本默認收集器

版本 Young Old
JDK6 PSScavenge(Parallel Scavenge) PSMarkSweep (Parallel Scavenge)
JDK7 PSScavenge(Parallel Scavenge) PSParallelCompact(Parallel Old)
JDK8 PSScavenge(Parallel Scavenge) PSParallelCompact(Parallel Old)
JDK11 G1 G1

從G1開始分代回收漸漸模糊,最新的ZGC已經沒有分代(可能只是暫時的)一說。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章