-Xms = -Xmx 固定堆,避免動態擴縮容引發額外 GC。java -Xmx3550m -Xms3550m -Xmn2g -Xss128k \
-XX:NewRatio=4 -XX:SurvivorRatio=4 \
-XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
-Xmn2g:新生代 2GB(含 Eden + 2 Survivor)。-Xss128k:線程棧 128KB(JDK 5+ 默認 1MB),相同內存下可創建更多線程(~3000-5000)。NewRatio=4:新生代:老年代 = 1:4(除永久代)。SurvivorRatio=4:Eden:Survivor = 4:2(單 Survivor 佔新生代 1/6)。MaxTenuringThreshold=0:對象**直接進老年代**,適合老年代對象多、新生代存活率低的場景;增大該值可延長對象在新生代存活,提升新生代回收率。# 僅新生代並行
java -Xmx3800m -Xms3800m -Xmn2g -Xss128k \
-XX:+UseParallelGC -XX:ParallelGCThreads=20
# 新生代+老年代雙並行(JDK 6+)
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k \
-XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC
# 目標停頓時間自適應
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k \
-XX:+UseParallelGC -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k \
-XX:ParallelGCThreads=20 \
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC
# 碎片整理
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k \
-XX:+UseConcMarkSweepGC \
-XX:CMSFullGCsBeforeCompaction=5 \
-XX:+UseCMSCompactAtFullCollection
UseParNewGC:新生代並行收集,配合 CMS(JDK 5+ 自動開啟)。NewRatio 可能失效,**建議显式用 -Xmn 指定新生代大小**。-XX:+PrintGC 簡要模式
-XX:+PrintGCDetails 詳細模式(新生代/老年代/永久代分別統計)
-XX:+PrintGCTimeStamps 時間戳(可混合)
-XX:+PrintGCApplicationConcurrentTime 應用運行時間
-XX:+PrintGCApplicationStoppedTime 應用停頓時間
-XX:+PrintHeapAtGC GC 前後完整堆佈局(極詳細)
-Xloggc:gc.log 重定向到文件(生產必備)
[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]
[Full GC [Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
DefNew:新生代收集器名(Parallel Scavenge)。8614K->781K(9088K):收集前用量 -> 收集後用量 (總容量)。0.0123035 secs:該階段耗時。展示 GC 前後各代(def new generation、tenured generation、compacting perm gen、ro space、rw space)的 **總容量、已用、起始地址、各區(eden/from/to)詳細佈局**,適合深度分析對象分佈與晋升閾值。