JVM参数调优

发布时间 2023-10-31 21:36:39作者: 小九讲测试
配置文件在tomcat/bin目录下catalina.sh中
 
JAVA_OPTS="-server -Xms595M -Xmx595M -Xmn223M -XX:SurvivorRatio=10 -Xss1M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseCMSCompactAtFullCollection -XX:+ExplicitGCInvokesConcurrent -Djava.rmi.server.hostname=192.168.128.138 -Dcom.sun.management.jmxremote.port=1234 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

 

堆内存参数设置:
  • -server 服务器模式,性能会比较好,必须放到第一个参数
  • -Xms -Xmx 设置堆内存大小,-Xms代表最小,-Xmx代表最大;两个值设置为一样的大小,如果设置不一样,启动时会自动分配大小,造成性能浪费。一般设置为可用内存的80%
  • -Xmn 年轻代大小,年轻代一般设置为整个堆的八分之三
  • 除去年轻代大小,剩余的年老代的大小
  • -XX:NewRadtio 如果设置时未使用-Xmn参数,可用此参数对年老代和年轻代根据比率设置(设置为2表示,年轻代占1/3,年老代占2/3)
  • -XX:SurvivorRadio 设置Eden与S区比率,一般设置成8~10之间的数字(如果设置为4,那么Eden:S0+S1=4:2)
 
 
非堆参数(持久代参数)设置:
  • 一般情况下不用设置,用默认值就够了。但假设系统存在大量导入导出时,需要调大,否则有可能出现内存溢出。
  • -XX:PermSize 非堆内存初始值,默认为内存的1/64
  • -XX:MaxPermSize 非堆内存最大值,默认为内存的1/4
  • -XX:+UseConcMarkSweepGC:增强型参数,移除长久未使用的class
  • -XX:+CMSClassUnloadingEnabled:同-XX:+UseConcMarkSweepGC ,增强型参数,移除长久未使用的class
栈:
  • -Xss 线程栈大小,默认值1M,一般不用改。如果要改,建议不要超过2M.