一、引言
????????不同版本的 JVM 默認(rèn)使用的垃圾收集器是不同的,目前的新生代和老年代的垃圾收集器如下圖所示,新生代和老年代之間的連線表示這些垃圾收集器可以進(jìn)行搭配使用
????????垃圾收集器的名字和?JVM 里面的參數(shù)對照表如下,即在 JVM 里面并不是存儲的垃圾收集器的名字,而是有一個其他的名字。它是有一個對應(yīng)關(guān)系的,如下所示:
垃圾收集器類型 | JVM 參數(shù)名稱 |
Serial | def new generation |
ParNew | par new generation |
Parallel Scavenge | PSYoungGen |
Parallel Old | ParOldGen |
CMS | concurrent mark-sweep generation |
Serial Old(MSC) | tenured generation |
G1 | garbage-first heap |
ZGC |
二、方法
2.1?PrintCommandLineFlags
? ? ? ? 這種方式僅適用于 windows 平臺,直接在控制臺輸入下面的命令行,可以從展示信息中看到 當(dāng)前機(jī)器 JVM 的垃圾回收器類型
java -XX:+PrintCommandLineFlags -version
# 輸入命令:java -XX:+PrintCommandLineFlags -version
C:\Users\Administrator>java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=255140800 -XX:MaxHeapSize=4082252800 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
2.2 通過 GC 日志和堆信息
????????默認(rèn)情況下,GC 日志和 Heap 信息我們是看不到的,可以通過增加 VM 參數(shù)的方式啟動。這樣當(dāng) GC 發(fā)生時,我們就能看到關(guān)于垃圾回收器的相關(guān)信息了。
? ? ? ? 我們?nèi)藶橹圃煲粋€ full gc 的操作,然后添加 vm 參數(shù),觀察輸出日志的變化,如下所示:
public class Test {
public static void main(String[] args) {
List<Object> list = new LinkedList<>();
while(true){
list.add(new byte[1024]);
}
}
}
-verbose:gc -XX:+PrintGCDetails
文章來源:http://www.zghlxwxcb.cn/news/detail-697261.html
?2.3 通過?jmap -heap vmid?文章來源地址http://www.zghlxwxcb.cn/news/detail-697261.html
到了這里,關(guān)于三種方式查看 JVM 垃圾收集器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!