jvm参数配置
Jar包直接运行
java -XX:+UseG1GC -Xms2048m -Xmx2048m -XX:MaxGCPauseMillis=200 -jar your-application.jar
Spring Boot Maven插件
在pom.xml配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-XX:+UseG1GC -Xms2048m -Xmx2048m -XX:MaxGCPauseMillis=200
</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
Tomcat部署
修改 catalina.sh
(Linux) 或 catalina.bat
(Windows):
# 在JAVA_OPTS中添加 export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -Xms2048m -Xmx2048m -XX:MaxGCPauseMillis=200"
2.参数说明
参数 | 作用 | 推荐值 |
---|---|---|
-XX:+UseG1GC |
启用G1垃圾收集器 | 生产环境推荐 |
-Xms512m |
初始堆内存 | 设为与-Xmx 相同 |
-Xmx2048m |
最大堆内存 | 根据机器内存调整 |
-XX:MaxGCPauseMillis=200 |
目标最大GC停顿时间 | 100-200ms |
3.生产环境建议
重要原则
# 初始和最大堆内存应设为相同值(避免动态调整开销)
-Xms2048m -Xmx2048m
完整示例(生产推荐):
-XX:+UseG1GC -Xms2048m -Xmx2048m -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps
验证参数是否生效:
# 查看JVM使用的参数 jcmd <PID> VM.flags # 或 java -XX:+PrintFlagsFinal -version | grep UseG1GC