JVM配置
最常见的JVM配置当属内存分配,因为在绝大多数情况下,JVM默认分配的内存可能不能够满足我们的需求 ,特别是在生产环境,此时需要手动修改Tomcat启动时的内存参数分配。
JVM内存模型图
JVM配置选项
windows平台(catalina.bat)
set JAVA_OPTS=-server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8
linux平台(catalina.sh)
JAVA_OPTS='-server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:SurvivorRatio=8'
序号 | 参数 | 含义 |
---|---|---|
1 | -Xms | 堆内存的初始大小 |
2 | -Xmx | 堆内存的最大大小 |
3 | -Xmn | 新生代的内存大小,官方建议是整个堆的3/8 |
4 | -XX:MetaspacesSize | 元空间内存初始大小,在JDK1.8之前为:-XX:PermSize(永久代) |
5 | -XX:MaxMetaspaceSize | 元空间内存最大大小,在JDK1.8之前为 -XX:MaxPermSize(永久代) |
6 | -XX:InitialCodeCacheSize -XX:ReservedCodeCacheSize |
代码缓存区大小 |
7 | -XX:NewRatio | 设置新生代和老年带的相对大小比例。这种方式的优点是新生代大小会随着整个堆大小动态扩展。 如-XX:NewRatio=3 指定老年带 / 新生代 为 3 / 1 老年带占堆大小的3/4,新生代占1/4 |
8 | -XX:SurvivorRatio | 指定伊甸区(Eden)与幸存区大小比例。 如-XX:SurvivorRatio=10 表示伊甸区是幸存区(To)大小的10倍(也是幸存区From的10倍)。 所以,伊甸区占新生代大小的10 / 12,幸存区From和幸存区To每个占新生代的1 / 12。注意:两个幸存区永远是一样大的 |