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

被折叠的 条评论
为什么被折叠?



