一、内存相关参数
1. 堆内存控制
-Xmx
:最大堆内存(如 -Xmx4g
,默认物理内存1/4)。-Xms
:初始堆内存(建议与-Xmx
相等,避免动态扩容带来的性能波动)。-Xmn
:新生代大小(如 -Xmn2g
,需权衡老年代空间)。-XX:NewRatio
:老年代与新生代的比例(如 -XX:NewRatio=2
表示老年代是新生代的2倍)。-XX:SurvivorRatio
:Eden区与Survivor区的比例(如 -XX:SurvivorRatio=8
表示Eden:S0:S1=8:1:1)。
2. 元空间(方法区)
-XX:MetaspaceSize
:初始元空间大小(默认约21M)。-XX:MaxMetaspaceSize
:最大元空间大小(防止无限膨胀,如 -XX:MaxMetaspaceSize=256m
)。
3. 直接内存(堆外内存)
-XX:MaxDirectMemorySize
:限制NIO直接内存(如 -XX:MaxDirectMemorySize=512m
)。
二、垃圾回收器(GC)相关
1. 指定GC算法
-XX:+UseSerialGC
:串行回收器(单线程,适合客户端应用)。-XX:+UseParallelGC
:并行回收器(多线程,吞吐量优先)。-XX:+UseConcMarkSweepGC
:CMS回收器(低延迟,JDK8及之前)。-XX:+UseG1GC
:G1回收器(平衡吞吐与延迟,JDK9+默认)。-XX:+UseZGC
:ZGC(超低延迟,JDK11+)。-XX:+UseShenandoahGC
:Shenandoah(低延迟,RedHat贡献)。
2. GC调优参数
-XX:MaxGCPauseMillis
:目标最大GC停顿时间(G1默认200ms,如 -XX:MaxGCPauseMillis=100
)。-XX:G1HeapRegionSize
:G1的Region大小(如 -XX:G1HeapRegionSize=4m
)。-XX:ParallelGCThreads
:并行GC线程数(默认CPU核数)。-XX:InitiatingHeapOccupancyPercent
:G1触发并发周期的堆占用阈值(默认45%)。
3. GC日志与分析
-Xloggc:<file>
:输出GC日志到文件。-XX:+PrintGCDetails
:打印详细GC信息。-XX:+PrintGCDateStamps
:显示GC发生的时间戳。-XX:+UseGCLogFileRotation
:GC日志轮转(配合-XX:NumberOfGCLogFiles=5
和-XX:GCLogFileSize=10M
)。
三、故障诊断与监控
1. 内存溢出(OOM)处理
-XX:+HeapDumpOnOutOfMemoryError
:OOM时生成堆快照。-XX:HeapDumpPath=<path>
:指定堆快照保存路径。
2. 类加载监控
-XX:+TraceClassLoading
:跟踪类加载过程。-XX:+TraceClassUnloading
:跟踪类卸载过程。
3. 调试参数
-XX:NativeMemoryTracking=summary
:监控堆外内存使用(通过jcmd <pid> VM.native_memory detail
查看)。-XX:+PrintFlagsFinal
:查看所有JVM参数的最终值。
四、其他优化参数
1. JIT编译器
-XX:+TieredCompilation
:分层编译(JDK8默认开启)。-XX:CompileThreshold
:触发JIT编译的方法调用阈值。
2. 线程控制
-Xss
:线程栈大小(如 -Xss256k
,默认1M)。
3. 禁用显式GC
-XX:+DisableExplicitGC
:禁用System.gc()
调用(注意可能影响NIO直接内存回收)。
五、生产环境典型配置示例
# 堆内存与GC(G1)
-Xmx4g -Xms4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200
# 元空间限制与OOM诊断
-XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs
# GC日志
-Xloggc:/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps
六、回答模板
分类说明 :先按内存、GC、监控等模块分类,避免遗漏。核心参数 :重点说明-Xmx
、-Xms
、-XX:+UseG1GC
等高频参数。场景结合 :例如“高吞吐场景用ParallelGC,低延迟用G1/ZGC”。调优原则 :强调参数调整前需通过日志(如GC日志)和工具(如jstat、MAT)定位问题。