一、內存相關參數
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)定位問題。