原创

解决tomcat自动崩溃 - JVM内存配置优化


## 修改Tomcat的内存配置,打开$TOMCAT_HOME/bin/catalina.sh文件(Windows系统是catalina.bat文件),大楖在250行左右,在JAVA_OPTS参数上添加内存参数设置即可 `JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256 -Djava.awt.headless=true"` >注意:-Xms-Xmx 不要设置太大,建议四分之一系统内存,否则无法启动tomcat >-XX:PermSize 和-XX:MaxPermSize 只支持tomcat8版本及以下,tomcat9及以上无需此参数 ### 参数说明 -server参数:表示以服务模式启动,启动速度会稍微慢一点,但性能会高很多。不加这个参数,默认是以客户端模式启动。 -Xms–Xmx JVM内存设置,建议设置成同一个值,可以在命令行中使用 java -Xmx1500m -version 来测试当前服务器可以设置的最大内存。(-Xmx 的值太大时,JVM 无法启动) -Xmn 年轻代 整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m。 -Xss 是指设定每个线程的堆栈大小。一般不超过 1M。 -XX:+AggressiveOpts 根据 JDK 的不同而采用不同的优化策略。 -XX:+UseBiasedLocking 优化线程锁。 -XX:PermSize=128M-XX:MaxPermSize=256M 非堆内存初始值和最大值。默认值为物理内存的 1/64 和 1/4。 -XX:+DisableExplicitGC 控制程序代码中不允许显示调用 System.gc()。 -XX:+UseParNewGC 对年轻代采用多线程并行回收,这样收得快。 -XX:+UseConcMarkSweepGC 使用更好的 GC 技术。 -XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情况下, 尽量减少 mark 的时间 -XX:+UseCMSCompactAtFullCollection 减少 Memory 碎片。 -XX:LargePageSizeInBytes 指定 Java heap 的分页页面大小 -XX:+UseFastAccessorMethods get,set 方法转成本地代码 -XX:+UseCMSInitiatingOccupancyOnly 指示只有在 oldgeneration 在使用了初始化的比例后concurrent collector 启动收集 -XX:CMSInitiatingOccupancyFraction=70 年老代到 70% 满的时候开始执行对年老代的并发垃圾回收((Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn) -Djava.awt.headless=true 解决图片在 Linux 上无法显示图片的问题。如生成验证码,含义是当前使用的是没有安装图安装图形界面的服务器,应用中如果获取系统显示有关参数会抛异常,可通过jmap -heap proccess_id查看设置是否成功。



tomcat
云服务器
web