版权声明:本文为博主原创文章,转载需注明出处。 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位系统为2G,64位跟操作系统内存大小有关
- JVMMemory:分配给JVM的内存
- ReservedOsMemory:用于系统dll加载等,大概用去100+M
- 所以分配给JVM的内存越多,越容易出现“ unable to create new native thread”异常