最常见的JVM配置当属内存分配,因为在绝大多数情况下,JVM默认分配的内存可能不能满足我们的需求,特别是在生产环境,此时需要手动修改Tomcat启动时的内存参数分配。
7.1 JVM内存模型图

7.2 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 ‐Xms1024m ‐Xmx2048m ‐XX:MetaspaceSize=256m ‐XX:MaxMetaspaceSize=512m ‐XX:SurvivorRatio=8"
参数说明
| 序号 | 参数 | 含义 |
|---|---|---|
| 1 | -Xms | 堆内存的初始大小 |
| 2 | -Xmx | 堆内存的最大大小 |
| 3 | -Xmn | 新生代的内存大小,官方建议时整个堆的3/8。 |
| 4 | -XX:MetaspaceSize | 元空间内存初始大小,在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表示伊甸园区(Eden)是幸存区To大小的10倍(也是幸存区From的10倍)。所以,伊甸园区(Eden)占新生代大小的10/12,幸存区From和幸存区To每个占新生代的1/12。注意,两个幸存区永远是一样大的。 |
| 配置之后,重新访问Tomcat,访问: | ||
![]() |
本文详细解析了JVM内存配置的常见参数,包括堆内存、元空间、代码缓存及新生代与老年代的比例设置。通过调整这些参数,可以优化Tomcat在Windows和Linux平台上的运行效率。

2519





