java8預設使用的垃圾收集器
先說結論:在JDK7u4開始的JDK7u系列與JDK8系列開始,HotSpot VM在選擇使用ParallelGC時,會預設開啟-XX:+UseParallelOldGC,即會使用Parallel Scavenge + Parallel Old組合。
具體可見這篇文章。
同時,在官方文件中,也有相關描述,點選此處可見原文。
----------------------------------------------------------------------------------------------------------------------------------------------
以下是過程,沒時間的朋友可忽略。
最近在讀《深入理解java虛擬機器:JVM高階特性與最佳實戰》,於是想看看自己電腦的jvm使用的垃圾收集器。百度一番之後,使用命令:java -XX:+PrintCommandLineFlags -version。得到如下結果:
對照書中參數列可知,使用的垃圾收集器組合為:Parallel Scavenge + Serial Old (PS MarkSweep)。
由jconsole.exe也可得到相同的結論。
但是在實際專案裡,啟動命令中我新增-verbose:gc -XX:+PrintGCDetails引數,得到如下結果:
[GC (Allocation Failure) [PSYoungGen: 65024K->7565K(75776K)] 65024K->7581K(249344K), 0.0093773 secs] [Times: user=0.05 sys=0.00, real=0.01 secs]
[GC (Metadata GC Threshold) [PSYoungGen: 68943K->10178K(75776K)] 68959K->10266K(249344K), 0.0083993 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Metadata GC Threshold) [PSYoungGen: 10178K->0K(75776K)] [ParOldGen: 88K->9852K(111104K)] 10266K->9852K(186880K), [Metaspace: 20647K->20646K(1067008K)], 0.0285451 secs] [Times: user=0.19 sys=0.00, real=0.03 secs]
由ParOldGen可看出老年代使用的是Parallel Old。這與跟命令列得到的結論不一致。百度之後,找到這樣一篇文章,由此得出本文最開始的結論。而官方文件也對此有所說明。當我在啟動命令中新增:-XX:-UseParallelOldGC後:
[Full GC (Metadata GC Threshold) [PSYoungGen: 10091K->0K(75776K)] [PSOldGen: 88K->9733K(109056K)] 10179K->9733K(184832K), [Metaspace: 20543K->20543K(1067008K)], 0.0282343 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
說明在使用ParallelGC時,的確開啟了UseParallelOldGC。
以上是本人的觀點,如有錯誤,還望指正。
相關文章
- 垃圾收集器
- 垃圾收集器學習
- JVM垃圾收集器(八)JVM
- Bronze垃圾收集器是否使 Rust 更易於使用?Rust
- Java8 預設方法Java
- JVM垃圾收集器總結JVM
- JVM垃圾收集器專題JVM
- JVM 經典垃圾收集器JVM
- 垃圾收集器與記憶體分配策略_hotspot垃圾收集演算法實現和垃圾收集器記憶體HotSpot演算法
- java幾種垃圾收集方法和垃圾收集器Java
- HotSpot的7種垃圾收集器組合HotSpot
- Java G1 垃圾收集器Java
- GC 分代回收 - 垃圾收集器GC
- 13.G1垃圾收集器
- JVM(五)-垃圾收集器入門JVM
- Java新的Z垃圾收集器ZGC介紹JavaGC
- 編寫你的第一個垃圾收集器
- JVM調優:HotSpot JVM垃圾收集器JVMHotSpot
- 深入理解 JVM 之 垃圾收集器JVM
- 10. 系統分析垃圾收集器
- 《Java8函數語言程式設計》讀書筆記---收集器Java函數程式設計筆記
- java8 新特性之預設方法Java
- 垃圾收集器與記憶體分配策略_垃圾收集演算法記憶體演算法
- JVM虛擬機器-垃圾回收機制與垃圾收集器概述JVM虛擬機
- Java虛擬機器04——垃圾收集器Java虛擬機
- 深入理解JVM,7種垃圾收集器JVM
- JVM——垃圾收集器與記憶體分配JVM記憶體
- 垃圾收集器與記憶體分配策略記憶體
- JVM學習筆記(4)---垃圾收集器JVM筆記
- JVM垃圾收集器基準報告 – Ionuț BaloșinJVM
- JVM 垃圾收集器與記憶體分配策略JVM記憶體
- jvm系列(三)GC演算法 垃圾收集器JVMGC演算法
- 【JVM進階之路】七:垃圾收集器盤點JVM
- JVM 低延遲垃圾收集器 Shenandoah 和 ZGCJVMNaNGC
- 十、jvm垃圾回收演算法、垃圾收集器、引用你真的瞭解麼?JVM演算法
- 理解Java記憶體區域與垃圾收集器Java記憶體
- Java虛擬機器詳解(四)------垃圾收集器Java虛擬機
- JVM(3)-垃圾收集器與記憶體分配策略JVM記憶體