目錄
- 1.七款經典的垃圾收集器
- 2.垃圾收集器之間組合關系
- 3.檢視預設的垃圾收集器
1.七款經典的垃圾收集器
經典的垃圾回收器又如下
7
種:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyROBlL5gDN5AjN1cTM0IDOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
如下圖所示,是經典的垃圾回收器和垃圾分代之間的關系。
Serial GC
、
Parallel Scavenger GC
以及
ParNew GC
隻能收集年輕代。
Serial Old GC
、
Parallel Old GC
以及
CMS GC
隻能收集老年代。
G1 GC
既能收集年輕代又能收集老年代。
2.垃圾收集器之間組合關系
一款年輕代的垃圾收集器總是對應着一款老年代的垃圾收集器。
下面的圖更新到了
JDK14
。
- 先将虛線看成是實線,一款年輕代的垃圾收集器對應着兩款老年代的垃圾收集器。比如說新生代使用
,老年代可以使用Serial GC
或者CMS GC
。Serial Old GC
- 在老年代,圖中的
還對應着CMS GC
。Serial Old GC
是Serial Old GC
的後備方案,因為CMS GC
是并發的垃圾收集器,在進行垃圾回收的時候,使用者線程還在工作,使用者線程可能還在制造垃圾,如果CMS GC
垃圾回收的速度比使用者線程制造垃圾的速度慢,就會回收失敗;如果CMS GC
失敗會使用CMS GC
作為後備方案,進行一次Serial Old GC
。Full GC
- 紅色的虛線,表示的是在
中這種組合被廢棄,但是還可以使用;在JDK8
中就被移除了,完全不能使用這兩種組合了。綠色虛線表示的是,JDK9
中,這種組合被廢棄了。JDK14
-
在JDK14中被移除了。CMS GC
64.7款經典的垃圾收集器以及它們之間的組合關系、如何檢視預設的垃圾回收器1.七款經典的垃圾收集器2.垃圾收集器之間組合關系3.檢視預設的垃圾收集器 64.7款經典的垃圾收集器以及它們之間的組合關系、如何檢視預設的垃圾回收器1.七款經典的垃圾收集器2.垃圾收集器之間組合關系3.檢視預設的垃圾收集器
中預設的組合是JDK8
和Parallel Scavenger GC
,Parallel Old GC
以後預設的垃圾回收器是JDK9
G1 GC
。
沒有哪一種垃圾回收器可以絕對的說是最好的,不同的場景選擇不同的垃圾回收器會更好。
3.檢視預設的垃圾收集器
兩種方式:
- 執行程式的時候,在
的eclipse
參數中加入JVM
-XX:+PrintCommandLineFlags
- 通過指令行的方式:
jinfo -flag 相關垃圾回收器 java程式程序ID
輸出的結果為64.7款經典的垃圾收集器以及它們之間的組合關系、如何檢視預設的垃圾回收器1.七款經典的垃圾收集器2.垃圾收集器之間組合關系3.檢視預設的垃圾收集器
,+号表示的是使用了-XX:+UseParallelGC
。如果是減号,就表示的是沒有使用。ParallelGC
更多JVM文章請通路我的JVM專欄:
https://blog.csdn.net/u011069294/category_10113093.html