tomcat内存优化及问题排查

本文介绍了Tomcat内存错误的三种常见类型:Java堆内存溢出、PermGen空间溢出和无法创建新线程。针对这些问题,提出了相应的解决策略,如调整-Xms和-Xmx设置堆内存大小,增大-XX:PermSize和-XX:MaxPermSize来应对永久代溢出,以及理解线程创建限制以防止无法创建新线程的异常。

tomcat内存错误常见的有三种分别:

1. OutOfMemoryError Java heap space(堆内存溢出)

  • 在排除应用服务内存泄漏的情况下,可以适当增加堆内存的大小解决该问题,及设置-Xms -Xmx ,一般不要查过物理内存的80%,并且最好两个值相等;
  • 堆内存大小包括年轻代和年老代,同过-Xmn或者-XX:NewSize设置年轻代的大小,-Xmx减去年轻代大小等于老年代大小;
  • 应用程序新创建的对象都分配在年轻代,可以根据实际情况调整年轻代和老年代大小;

2. OutOfMemoryError PermGen space(永久代溢出)

  • 这个区域主要保存CLASS和常量池、字段描述以及方法描述信息;
  • 可以加大-XX:PermSize -XX:MaxPermSize 来解决此问题

3. OutOfMemoryError unable to create new native thread.(无法创建新的线程)

  • java每个线程默认大小为1M
  • 可以创建的线程数:(MaxProcessMemory - JVMMemory - ReservedOsMemory / ThreadStackSize = Number of threads
  • MaxProcessMemory:进程最大内存数量,32位系统为2G64位跟操作系统内存大小有关
  • JVMMemory:分配给JVM的内存
  • ReservedOsMemory:用于系统dll加载等,大概用去100+M
  • 所以分配给JVM的内存越多,越容易出现“ unable to create new native thread”异常

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸葛本不亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值