原创
解决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