JVM 内存优化配置方案(1G~8G)
一、JVM 内存层级与回收器匹配
内存范围 | 适用回收器 | 核心优势 | 技术依据 |
---|---|---|---|
≤512MB | Serial + Serial Old | 单线程低内存开销,无并发线程资源消耗 | 小堆内存单线程效率最高 |
1G~4G | ParNew + CMS | 并发标记减少停顿,适应中小规模高并发场景 | CMS低延迟特性适用中内存 |
4G~8G | G1 | 区域化内存管理,可预测停顿时间(200ms内) | G1大内存优化能力 |
≥8G | ZGC | 亚毫秒级停顿(<10ms),TB级堆内存支持 | ZGC超低延迟特性 |
二、JVM 内存优化策略
1、新生代比例调整
- 低内存层级(≤512MB):固定
-Xmn170M(34%)
,减少Survivor区溢出概率 - 中内存层级(1G-4G):新生代占比提升至
30%~40%
,避免Survivor区溢出引发过早晋升老年代 - 大内存层级(4G-8G):新生代占比提升至
42%~45%
,平衡Young GC频率与对象存活率 - 超大内存层级(≥8G):固定
-Xmn2176M(40%)
,避免G1动态调整新生代比例导致Young GC时间波动
2、元空间固定分配
所有层级强制设置 MetaspaceSize=MaxMetaspaceSize
,消除动态扩容触发的Full GC风险
3、监控与稳定性增强
# GC日志监控
-Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
-XX:+PrintAdaptiveSizePolicy # 输出G1自适应策略日志
高并发场景(≥5G层级)补充:
-Xss256k # 降低线程栈内存占用
-XX:NativeMemoryTracking=detail # 监控堆外内存泄漏
内存泄漏防护
# 内存泄漏防护
-XX:NativeMemoryTracking=summary
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/logs/oom_dump.hprof
4、G1回收器
- 最大堆大小
G1管理的最大堆大小为64G。每个Region的大小通过
-XX:G1HeapRegionSize
来设置,大小为1~32MB
,默认最多可以有2048个Region,G1能管理的最大堆内存是 32MB2048=64G 。
使用G1垃圾回收器最小堆内存应为 1MB2048=2GB ,低于此值建议使用其它垃圾回收器。 - Region大小
Region大小为
1~32MB
,具体取值有1MB、2MB、4MB、8MB、16MB、32MB
,Region大小优化与大对象有关,当对象占用内存超过Region的一半时将被视为大对象。 - 大堆(≥5G)配置
G1HeapRegionSize=4M
,适配缓存等大对象分配需求 - 高并发场景追加
-XX:ConcGCThreads=4
,提升并发标记效率 - 添加
-XX:G1ReservePercent=15
预留内存空间,降低并发标记失败风险 - 在G1回收器中,可以通过设置
-XX:ParallelGCThreads
参数来指定回收线程的数量。G1回收器默认会使用系统中的可用处理器核心数量作为回收线程的数量,但用户可以通过此参数显式地设置回收线程的数量。例如,如果想要使用4个回收线程,可以在启动JVM时添加如下参数:-XX:ParallelGCThreads=4
- 此外,G1回收器还支持通过
-XX:ConcGCThreads
参数来指定并发阶段使用的线程数量。
5、关键风险控制
Survivor区溢出
- 若Young GC后存活对象超过Survivor容量,需降低
-XX:MaxTenuringThreshold
至3~5
- 监控GC日志中
"to-space overflow"
警告,适当调整新生代大小
堆外内存限制
- 5G+层级需设置
-XX:MaxDirectMemorySize=物理内存*80%
,建议预留物理内存20%,避免 DirectByteBuffer 泄漏 - 监控NMT日志,及时发现堆外内存异常增长
OOM防护措施
- 所有层级添加
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/oom_dump.hprof
- 生产环境配置
-XX:OnOutOfMemoryError="kill -9 %p"
实现自动重启
三、JVM 分级配置参考
1、低内存层级(≤512MB)
# Serial 回收器配置
-XX:+UseSerialGC
-XX:NewRatio=2 # 老年代与新生代比例2:1
-XX:SurvivorRatio=8 # Eden与Survivor比例8:1:1
- 适用场景:嵌入式设备/IoT终端/轻量级微服务
- 风险提示:内存溢出直接触发Full GC,需严格限制 -Xmx
- Xmn 占堆30%~40%(如1G层级改为 -Xmn170M)
- 添加GC日志记录:
-Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
配置示例:
内存层级 | 堆内存配置 | 新生代比例 | 元空间配置 | 调优参数 |
---|---|---|---|---|
<= 512 | -Xmx512M -Xms512M | -Xmn170M (34%) | -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M | -XX:+UseSerialGC -XX:NewRatio=2 -XX:SurvivorRatio=8 -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m |
完整JVM参数:
Xmx512M -Xms512M -Xmn170M -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M -XX:+UseSerialGC -XX:NewRatio=2 -XX:SurvivorRatio=8 -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
2、中内存层级(1G~4G)
# ParNew+CMS配置
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC # 表示年轻代使用 ParNew,老年代的用 CMS 垃圾回收器
-XX:+ExplicitGCInvokesConcurrent # 当代码里显示的调用了 System.gc(),实际上是想让回收器进行FullGC,如果发生这种情况,则使用这个参数开始并行 FullGC。建议加上。
-XX:+ParallelRefProcEnabled # 可以用来并行处理 Reference,以加快处理速度,缩短耗时。
-XX:+CMSScavengeBeforeRemark # 开启或关闭在 CMS 重新标记阶段之前的清除(YGC)尝试。降低Remark阶段停顿时间,建议加上。
-XX:CMSInitiatingOccupancyFraction=70 : # CMS垃圾收集器,当老年代达到70%时,触发CMS垃圾回收。
-XX:+UseCMSInitiatingOccupancyOnly # 只使用设定的触发阈值(上面指定的70%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整.
-Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m # 添加GC日志记录
配置示例:
内存层级 | 堆内存配置 | 新生代比例 | 元空间配置 | 调优参数 |
---|---|---|---|---|
1G | -Xmx768M -Xms768M | -Xmn256M (33%) | -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M | -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m |
2G | -Xmx1536M -Xms1536M | -Xmn548M (35%) | -XX:MetaspaceSize=192M -XX:MaxMetaspaceSize=192M | -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m |
3G | -Xmx2304M -Xms2304M | -Xmn852M (37%) | -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M | -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m |
4G | -Xmx3072M -Xms3072M | -Xmn1167M (38%) | -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M | -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m |
完整JVM参数:
# 1G 配置示例
-Xmx768M -Xms768M -Xmn256M -XX:MaxMetaspaceSize=128M -XX:MetaspaceSize=128M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
# 2G 配置示例
-Xmx2304M -Xms2304M -Xmn852M -XX:MetaspaceSize=192M -XX:MaxMetaspaceSize=192M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
# 3G 配置示例
-Xmx3072M -Xms3072M -Xmn1167M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
# 4G 配置示例
Xmx3072M -Xms3072M -Xmn1167M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
3、大内存层级(4G~8G)
# G1标准配置
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200 # 最大停顿时间控制
-XX:G1ReservePercent=10
-XX:G1HeapRegionSize=4M # 适配大对象分配(≥4G必设)
-XX:ParallelGCThreads=4 # 默认会使用系统中的可用处理器核心数量作为回收线程的数量
-XX:ConcGCThreads=2 # 来指定并发阶段使用的线程数量
-XX:InitiatingHeapOccupancyPercent=45 # 堆占用45%触发并发标记
-Xss256k # 降低单线程内存占用
-XX:NativeMemoryTracking=detail
- 通过
G1NewSizePercent/G1MaxNewSizePercent
动态调整新生代占比(默认5%~60%) - 混合回收阶段优先处理垃圾最多Region
- 5G+层级维持新生代比例在40%-45%范围
- 添加
-XX:ConcGCThreads=并发线程数
参数(通常设为GC线程数的1/4) - 添加
-XX:G1ReservePercent=15
,预留堆空间减少并发GC失败概率 - 添加GC日志记录与分析:
-Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
配置示例:
内存层级 | 堆内存配置 | 新生代比例 | 元空间配置 | G1调优参数 |
---|---|---|---|---|
4G | -Xmx3072M -Xms3072M | -Xmn1167M (38%) | -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M | -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=10 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -Xss256k -XX:NativeMemoryTracking=detail |
5G | -Xmx3840M -Xms3840M | -Xmn1536M (40%) | -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M | -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=10 -XX:ConcGCThreads=2 -Xss256k -XX:NativeMemoryTracking=detail |
6G | -Xmx4608M -Xms4608M | -Xmn1935M (42%) | -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M | -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:ConcGCThreads=4 -Xss256k -XX:NativeMemoryTracking=detail |
8G | -Xmx6144M -Xms6144M | -Xmn2765M (45%) | -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M | -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=8M -XX:G1MaxNewSizePercent=50 -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:ConcGCThreads=4 -Xss256k -XX:NativeMemoryTracking=detail |
# 4G配置示例
-Xmx3072M -Xms3072M -Xmn1167M -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=10 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -Xss256k -XX:NativeMemoryTracking=detail -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
# 5G配置示例
-Xmx3840M -Xms3840M -Xmn1536M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:ConcGCThreads=2 -Xss256k -XX:NativeMemoryTracking=detail -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
# 6G配置示例
-Xmx4608M -Xms4608M -Xmn1935M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:ConcGCThreads=4 -Xss256k -XX:NativeMemoryTracking=detail -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
# 8G配置示例
-Xmx6144M -Xms6144M -Xmn2765M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=8M -XX:G1MaxNewSizePercent=50 -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:ConcGCThreads=4 -Xss256k -XX:NativeMemoryTracking=detail -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
4、超大内存层级(≥8G)JKD 17 +
# ZGC配置
-XX:+UseZGC
-XX:ZAllocationSpikeTolerance=5 # 容忍5%内存分配尖刺
-XX:ZCollectionInterval=30 # 强制30秒执行一次GC
-XX:+UnlockExperimentalVMOptions # 解锁实验性参数
-XX:+UseNUMA # 启用NUMA支持,提升多处理器性能
优势对比:
- 相比G1减少90%停顿时间(实测8G堆Young GC <2ms)
- 无分代设计,通过着色指针实现并发压缩
- 支持TB级堆内存,停顿时间不随堆增大而增加
- JDK17+版本ZGC已完全成熟,可用于生产环境
调优重点:
- ZGC不需要设置新生代大小,采用统一堆空间管理
- 添加
-XX:+UseNUMA
提升多处理器性能 - 添加
-XX:SoftMaxHeapSize=堆大小的80%
,保留内存弹性空间 - 监控ZGC日志中的
Allocation Stall
和GC Cycle
信息
配置示例:
# 16G配置示例
-Xmx13312M -Xms13312M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseZGC -XX:ZAllocationSpikeTolerance=5 -XX:ZCollectionInterval=30 -XX:+UnlockExperimentalVMOptions -XX:+UseNUMA -XX:SoftMaxHeapSize=10649M -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/oom_dump.hprof
四、性能监控与调优
1、GC日志分析
- 使用GCeasy或GCviewer等工具分析GC日志
- 关注关键指标:
- Minor GC频率与时间
- 老年代增长速率
- Full GC次数与停顿时间
- 对象晋升率
2、内存泄漏排查
- 使用jmap定期获取堆快照:
jmap -dump:format=b,file=heap.bin <pid>
- 使用MAT或VisualVM分析堆转储文件
- 关注:
- 大对象占用
- 对象增长趋势
- 强引用链分析
3、JVM参数调优流程
- 基线测试:采集默认配置下性能数据
- 配置调整:根据内存层级选择合适回收器
- 新生代调优:调整新生代比例至合理范围
- 元空间固定:避免元空间动态扩容触发Full GC
- 监控优化:添加GC日志与内存泄漏防护
- 压测验证:全链路压测验证调优效果
5、常见问题处理
问题现象 | 可能原因 | 优化方向 |
---|---|---|
Young GC频繁 | 新生代空间不足 | 增加-Xmn或新生代比例 |
Minor GC后晋升过多 | Survivor空间不足 | 调整SurvivorRatio,增加Survivor区比例 |
CMS concurrent mode failure | 老年代增长过快 | 降低CMSInitiatingOccupancyFraction |
G1 Evacuation Failure | 垃圾对象积累,分区回收不及时 | 调低InitiatingHeapOccupancyPercent,提前触发并发标记 |
ZGC Allocation Stall | 内存分配停顿 | 增加ZAllocationSpikeTolerance值 |
五、场景化最佳实践
1、微服务应用(1G-2G)
# 轻量级微服务最佳实践配置
-Xmx1536M -Xms1536M -Xmn548M -XX:MetaspaceSize=192M -XX:MaxMetaspaceSize=192M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1HeapRegionSize=1M -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/oom_dump.hprof
2、API网关/中间件(4G-6G)
# 高吞吐中间件配置
-Xmx4608M -Xms4608M -Xmn1935M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=45 -XX:ConcGCThreads=4 -Xss256k -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/oom_dump.hprof -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
3、后台管理服务(4G)
# 后台管理服务
-Xmx3072M -Xms3072M -Xmn1896M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=70 -XX:G1ReservePercent=10 -XX:ConcGCThreads=4 -Xss512k -XX:MaxDirectMemorySize=256M -XX:NativeMemoryTracking=detail -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/heaperror.log
-Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
3、报告单生成(4G)
# 报告单生成
-Xmx3072M -Xms3072M -Xmn1896M -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:InitiatingHeapOccupancyPercent=70 -XX:G1ReservePercent=10 -XX:ConcGCThreads=4 -Xss512k -XX:MaxDirectMemorySize=512M -XX:NativeMemoryTracking=detail -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/heaperror.log
-Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m
4、大数据处理(8G+)
# 大数据计算节点配置
-Xmx13312M -Xms13312M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseZGC -XX:ZAllocationSpikeTolerance=5 -XX:ZCollectionInterval=30 -XX:+UnlockExperimentalVMOptions -XX:+UseNUMA -XX:SoftMaxHeapSize=10649M -Xlog:gc*:file=/logs/gc-%t.log:time,level,tags:filecount=5,filesize=100m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/oom_dump.hprof
#### 场景1:吞吐量优先型(如批量数据处理)
```bash
# 基础内存配置
-Xms4g -Xmx4g # 固定堆大小,避免扩容开销
-Xss512k # 保持栈精简(适合500+线程场景)
-XX:MetaspaceSize=512m # 提高初始值减少扩容GC
-XX:MaxMetaspaceSize=1g
# G1核心调优
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200 # 适当放宽停顿时间以提升吞吐量
-XX:G1NewSizePercent=30 # 新生代初始占比30%
-XX:G1MaxNewSizePercent=50 # 新生代最大占比50%
-XX:G1HeapRegionSize=4m # 分区大小4MB(减少大对象分配压力)
-XX:InitiatingHeapOccupancyPercent=45 # 更早启动混合GC
# 诊断增强
-Xlog:gc*,gc+heap=debug:file=/applogs/market/gc.log:time,uptimemillis:filecount=5,filesize=100m
-XX:ErrorFile=/applogs/market/hs_err_pid%p.log # 崩溃日志
场景2:低延迟优先型(如实时交易系统)
# 基础内存配置
-Xms4g -Xmx4g
-Xss256k # 更低栈内存(需确保无StackOverflow)
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=1g
# G1激进调优
-XX:+UseG1GC
-XX:MaxGCPauseMillis=50 # 严格限制停顿时间
-XX:G1NewSizePercent=10 # 动态调整范围10%~30%
-XX:G1MaxNewSizePercent=30
-XX:G1ReservePercent=20 # 预留更多空间应对突发分配
-XX:ConcGCThreads=4 # 增加并发GC线程
-XX:+UseNUMA # 启用NUMA内存优化
# 内存屏障优化
-XX:+UnlockExperimentalVMOptions
-XX:G1ConcRefinementThreads=8 # 并行处理引用更新
作者:Jeebiz 创建时间:2025-04-26 11:33
最后编辑:Jeebiz 更新时间:2025-04-27 18:32
最后编辑:Jeebiz 更新时间:2025-04-27 18:32