当前位置: 代码网 > 科技>电脑产品>内存 > Tomcat内存溢出怎么办?JVM参数优化实战指南

Tomcat内存溢出怎么办?JVM参数优化实战指南

2026年09月01日 内存 我要评论
tomcat 配置 jvm 参数环境规格以 2c4g 为例配置添加在 tomcat 的 bin 目录下 catalina.sh 里,位置在 cygwin=false 前。java_opts="$jav

tomcat 配置 jvm 参数

环境规格以 2c4g 为例

配置添加在 tomcat 的 bin 目录下 catalina.sh 里,位置在 cygwin=false 前。

java_opts="$java_opts -server -xms2048m -xmx2048m -xmn768m -xx:parallelgcthreads=2 -xx:permsize=1024m -xx:maxpermsize=1024m -djava.awt.headless=true -xx:+disableexplicitgc" cygwin=false

参数说明

  • -server:一定要作为第一个参数,在多个cpu时性能佳
  • -xms:堆内存的初始大小,是分配jvm的初始内存,默认为物理内存的1/64。一般来讲,此值设的大点,程序会启动的快一点。
  • -xmx:堆内存的最大大小,是分配jvm的最大内存,默认为物理内存的1/4。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出outofmemory异常。

默认空余堆内存小于40%时,jvm就会增大堆直到-xmx的最大限制;空余堆内存大于70%时,jvm会减少堆直到 -xms的最小限制。

因此建议-xms与-xmx设成一样的值,均设为物理内存的一半。其目的是为了避免在java每次gc(垃圾回收机制清理堆区)后需要重新调整堆的大小而浪费资源。

  • -xmn:堆内新生代的大小,通过这个值也可以得到老生代的大小:-xmx减去-xmn。官方推荐配置为整个堆的 3/8。

堆区进一步细化分为:新生代、中生代、老生代。 ●java中每新new一个对象所占用的内存空间就是新生代的空间,当java垃圾回收机制对堆区进行资源回收后,那些新生代中没有被回收的资源将被转移到中生代,中生代的被转移到老生代。

整个jvm堆大小 = 新生代大小 + 老生代大小 + 永久代大小

  • -xss:设置每个线程可使用的内存大小,即栈的大小。一般情况下,设置256k就足够了,此配置将会影响此进程中并发线程数的大小。
  • -xx:parallelgcthreads:配置并行收集器的线程数,即:同时有多少个线程一起进行垃圾回收。当 cpu 数量小于8,此值建议配置等于 cpu 数量。
  • -xx:permsize:设置非堆内存初始值,即持久代内存大小,默认是物理内存的1/4
  • -xx:maxpermsize:最大非堆内存的大小,即最大持久代内存大小,默认是物理内存的1/4

非堆区内存是不会被java垃圾回收机制进行处理的,且最大堆内存与最大非堆内存的和不能超出操作系统的可用内存。

xmx和xms设置一样大,maxpermsize和minpermsize设置一样大,这样可以减轻伸缩堆大小带来的压力。

  • -xx:+useparnewgc:对新生代采用多线程并行回收,缩短垃圾收集的时间
  • -xx:+useconcmarksweepgc:并发标记清除收集器,它是老年代的收集算法,缩短垃圾收集的时间
  • -xx:+disableexplicitgc:禁止调用system.gc(),防止误调用gc方法导致系统的 jvm 大起大落而使系统响应时间严重降低。
  • -djava.awt.headless=true:免避在 linux/unix 环境下 web 网页不能正常显示图片
  • -xx:+cmsparallelremarkenabled:启用并行标记,降低标记停顿
  • -xx:+usecmscompactatfullcollection -xx:cmsfullgcsbeforecompaction=0:这两个参数默认值就是这样的,表示触发fullgc时压缩堆,优化内存碎片
  • -xx:cmsinitiatingoccupancyfraction=70:在应用程序使用70%完内存后开始cms垃圾收集

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com