tomcat内存优化及问题排查

版权声明:本文为博主原创文章,转载需注明出处。 https://blog.csdn.net/david_pfw/article/details/82913297

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”异常

猜你喜欢

转载自blog.csdn.net/david_pfw/article/details/82913297