java 17 - ZGC 的改进
ZGC (opens new window)是 java 11 引入的追求低延迟的垃圾回收器,和G1一样,也是基于Region的堆内存布局。但是ZGC的Region具有动态性:动态创建、动态销毁、动态数据容量;java 17 引入了一下几个新特性:
- 卸载类:在不停机的情况下,卸载不需要的类,可以减少内存占用。
- 日志记录:提供了更丰富的日志记录选项,方便进行调试和性能分析。
官网 quick start ZGC指令
-XX:+UseZGC -XX:+ZGenerational -Xmx<size> -Xlog:gc
1
参数
-server -Xms36600m -Xmx36600m
#开启ZGC
-XX:+UseZGC
#GC周期之间的最大间隔(单位秒)
-XX:ZCollectionInterval=120
#官方的解释是 ZGC 的分配尖峰容忍度,数值越大越早触发GC
-XX:ZAllocationSpikeTolerance=4
#关闭主动GC周期,在主动回收模式下,ZGC 会在系统空闲时自动执行垃圾回收,以减少垃圾回收在应用程序忙碌时所造成的影响。如果未指定此参数(默认情况),ZGC 会在需要时(即堆内存不足以满足分配请求时)执行垃圾回收。
-XX:-ZProactive
#GC日志
-Xlog:safepoint=trace,classhisto*=trace,age*=info,gc*=info:file=/opt/logs/gc-%t.log:time,level,tid,tags:filesize=50M
#发生OOM时dump内存日志
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/apps/errorDump.hprof
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
原理学习中...
上次更新: 2024/01/11 17:06:16