JVM内存模型图
各参数可控制的区域
Catalina JAVA_OPTS参数
Linux环境
catalina.sh文件头部
JAVA_OPTS="$JAVA_OPTS -server -Xms1g -Xmx1g -Xmn512m -XX:SurvivorRatio=8 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
windows环境
catalina.bat文件
set "JAVA_OPTS=%JAVA_OPTS% -server -Xms1g -Xmx1g -XX:SurvivorRatio=8 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
常用参数详解
-Xms
初始化堆的大小。
-Xmx
堆内存的最大大小。
-Xmn
新生代的内存大小,Sun官方推荐配置为整个堆的 3/8。
-XX:MetaspaceSize
元空间内存初始大小,在JDK1.8版本之前配置为:-XX:PermSize(永久代)
-XX:MaxMetaspaceSize
元空间内存最大大小,在JDK1.8版本之前配置为:-XX:MaxPermSize(永久代)
-XX:NewRatio
设置新生代和老年代的相对大小比例。这种方式的优点是新生代大小会随着整个堆大小动态扩展。
如 -XX:NewRatio=3 指定老年代 / 新生代为 3/1 , 老年代占堆大小的 3/4,新生代占 1/4 。
-XX:SurvivorRatio
伊甸园区(Eden)与幸存区大小比例。
如 -XX:SurvivorRatio=10,表示伊甸园区(Eden)是幸存区(To)大小的10倍,也是幸存区(From)的10倍。所以,伊甸园区(Eden)占新生代大小的 10/12,幸存区(From)和幸存区(To)每个占新生代的 1/12。两个幸存区永远是一样大的。
-XX:InitialCodeCacheSize -XX:ReservedCodeCacheSize
代码缓存区大小