tomcat参考配置

export CATALINA_OPTS="$CATALINA_OPTS -Xms4098m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx4098m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmn2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MetaspaceSize=2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:-OmitStackTraceInFastThrow"
export CATALINA_OPTS="$CATALINA_OPTS -XX:SurvivorRatio=6"
export CATALINA_OPTS="$CATALINA_OPTS -XX:-UseAdaptiveSizePolicy"

查看JVM堆信息

jmap -heap 20886

堆组成:
堆被划分成两个不同的区域:新生代( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。

  • 堆大小 = 新生代 + 老年代,堆的大小可以通过参数 –Xms、-Xmx 来指定。
    默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 ),即:新生代 ( Young ) = 1/3 的堆空间大小。老年代 ( Old ) = 2/3 的堆空间大小。
  • 新生代 ( Young ) = Eden 和 两个 Survivor 区域,这两个 Survivor 区域分别被命名为 from 和 to,以示区分。
    默认的,Edem : from : to = 8 : 1 : 1 ( 可以通过参数 –XX:SurvivorRatio 来设定 ),即: Eden = 8/10 的新生代空间大小,from = to = 1/10 的新生代空间大小。

JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,所以无论什么时候,总是有一块 Survivor 区域是空闲着的。因此,新生代实际可用的内存空间为 9/10 ( 即90% )的新生代空间。HotSpot JVM把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫from和to)。默认比例为8:1,为啥默认会是这个比例,主要是一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Survivor区。对象在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到一定程度时,就会被移动到年老代中

有关年轻代的JVM参数

1)-XX:NewSize和-XX:MaxNewSize
用于设置年轻代的大小,建议设为整个堆大小的1/3或者1/4,两个值设为一样大。
2)-XX:SurvivorRatio
用于设置Eden和其中一个Survivor的比值,这个值也比较重要。
3)-XX:+PrintTenuringDistribution
这个参数用于显示每次Minor GC时Survivor区中各个年龄段的对象的大小。
4).-XX:InitialTenuringThreshol和-XX:MaxTenuringThreshold
用于设置晋升到老年代的对象年龄的最小值和最大值,每个对象在坚持过一次Minor GC之后,年龄就加1。
Last modification:October 31, 2022
If you think my article is useful to you, please feel free to appreciate