(1)新生代垃圾回收器
(2)老年代垃圾回收器
(3)整堆收集器:G1、ZGC
-XX:+UseSerialGC
-XX:+PrintCommandLineFlags
//参数
-XX:+UseSerialGC -XX:+PrintCommandLineFlags -Xms32m -Xmx32m
//输出
-XX:InitialHeapSize=33554432 -XX:MaxHeapSize=33554432 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseSerialGC
-XX:+UseParNewGC
-XX:+PrintCommandLineFlags
//参数
-XX:+UseParNewGC -XX:+PrintCommandLineFlags -Xms32m -Xmx32m
//输出
-XX:InitialHeapSize=33554432 -XX:MaxHeapSize=33554432 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParNewGC
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-XX:+PrintCommandLineFlags
//参数
-XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+PrintCommandLineFlags -Xms32m -Xmx32m
//输出
-XX:InitialHeapSize=33554432 -XX:MaxHeapSize=33554432 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC -XX:+UseParallelOldGC
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
-XX:+PrintCommandLineFlags
//输入
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintCommandLineFlags -Xms32m -Xmx32m
//输出
-XX:InitialHeapSize=33554432 -XX:MaxHeapSize=33554432 -XX:MaxNewSize=11190272 -XX:MaxTenuringThreshold=6 -XX:NewSize=11190272 -XX:OldSize=22364160 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC
-XX:+PrintCommandLineFlags
查看命令行相关参数(包含使用的垃圾收集器)-XX:G1ConcRefinementThreads=9 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=536870912 -XX:MaxHeapSize=8589934592 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC
-XX:G1HeapRegionSize
配置Young GC
不同,不是当新生代的Eden区放满了就进行垃圾回收-XX:MaxGCPauseMills
设定的值,会触发Young GC-XX:MaxGCPauseMillis
制定计划//输入
-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms524m -Xmx524m -XX:+PrintCommandLineFlags
//输出
-XX:G1ConcRefinementThreads=9 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=549453824 -XX:MaxGCPauseMillis=100 -XX:MaxHeapSize=549453824 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC
* 比如使用 -Xmn 选项或 -XX:NewRatio 等设置年轻代大小
-XX:+UnlockExperimentalVMOptions
才可以使用是否支持 | 平台 | 支持版本 |
---|---|---|
是 | Linux/x64 | JDK 15 (Experimental since JDK 11) |
是 | Linux/AArch64 | JDK 15 (Experimental since JDK 13) |
是 | macOS/x64 | JDK 15 (Experimental since JDK 14) |
是 | Windows/x64 | JDK 15 (Experimental since JDK 14) |
是 | Windows/AArch64 | JDK 16 |
是 | macOS/AArch64 | JDK 17 |
是 | Linux/PowerPC | JDK 18 |
参数: -XX:+UseZGC -XX:+PrintCommandLineFlags -Xms32m -Xmx32m
输出结果
-XX:InitialHeapSize=33554432 -XX:MaxHeapSize=33554432 -XX:MinHeapSize=33554432 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:-UseCompressedOops -XX:+UseZGC
总结:ZGC业界还没大规模使用,更多再实验性观望阶段,还存在变动和争议阶段,如果可能则预计26年~28年成为主流,当下我们开发的采用的垃圾收集器是G1收集器,23~25年会是主流。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。