Skip to content
Optimized
  • 参数示例
shell
java \
# 启用 Server 模式 JVM,使用优化后的 JIT 编译器(C2)生成高性能机器码
-server \
# 堆内存初始大小
-Xms4g \
# 堆内最大值(建议与-Xms一致)
-Xmx4g \
# 年轻代大小
-Xmn2g \
# 初始元空间大小
-XX:MetaspaceSize=512m \
# 元空间最大值
-XX:MaxMetaspaceSize=512m \
# G1垃圾回收器(JDK9+默认)
-XX:+UseG1GC \
# 期望最大 GC 停顿时间 200ms
-XX:MaxGCPauseMillis=200 \
# 设置 GC 时使用的并行线程数
-XX:ParallelGCThreads=4 \
# G1 并发标记阶段线程数
-XX:ConcGCThreads=2 \
# 如果代码调用 System.gc(),触发 并发 GC 而不是 Stop-the-World Full GC;避免应用阻塞
-XX:+ExplicitGCInvokesConcurrent \
# 当 JVM OOM 时生成堆转储文件,并保存到./logs/heapdump.hprof
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=./logs/heapdump.hprof \
# 打印每次 GC 的详细信息(内存回收前后、各代占用等)
# 加上时间戳,便于分析,输出到./logs/gc.log
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-Xloggc:./logs/gc.log \
# 禁用 AWT 图形界面
-Djava.awt.headless=true \
# 设置默认文件编码为 UTF-8
-Dfile.encoding=UTF-8 \
# Spring 应用设置激活的配置环境(profile)为 prod
-Dspring.profiles.active=prod \
-jar app.jar
  • GC选择
场景推荐GCJDK版本关键参数
开发/测试(适合客户端应用、小型服务)Serial所有-XX:+UseSerialGC
批处理任务(多核服务器,注重吞吐量)Parallel所有-XX:+UseParallelGC
Web服务(平衡吞吐量和延迟,大堆内存)G1JDK 9+-XX:+UseG1GC
实时系统(超大堆,亚毫秒级暂停)ZGCJDK 11+-XX:+UseZGC
大数据(超大堆,亚毫秒级暂停)ShenandoahJDK 12+-XX:+UseShenandoahGC

欢迎来到 Laazua 的站点