Tomcat_Java Web_内存溢出总结

Posted Ipeter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat_Java Web_内存溢出总结相关的知识,希望对你有一定的参考价值。

在抛出内存溢出错误的时候,一般都会提示内存泄露的种类,一般也都是按照区域进行划分:

1. 堆(heap)内存泄漏java.lang.OutOfMemoryError: Javaheap space:大家都比较熟悉 ,通过设置-Xms2048m -Xmx4096m可以解决

2. 栈(stack)内存泄漏:当前线程运行期间维护的中间变量等信息过多,例如常见的死循环引起stack over flow

3. 方法区(permanent heap)内存泄漏,即java.lang.OutOfMemoryError: PermGen space:发生的原因和类型装载、类型卸载有直接的关系,通过设置-XX:MaxNewSize=256m -XX:MaxPermSize=256m可以解决。

一般情况下,当服务器内存过小,而提供了大量的访问服务时,可能会缓存过多的数据对象造成堆内存溢出,当web应用不断扩大,加载的lib库达到一定大小(4M)后,就容易报PermGen OOM,也就是方法区溢出。

在Linux服务器中将参数写入环境变量:

  1. export CATALINA_OPTS="-Xms2048m -Xmx4096m" 

  2. export JAVA_OPTS="-XX:MaxNewSize=256m -XX:MaxPermSize=256m" 

Xmx 最大不要超过服务器物理内存的80%

以上是关于Tomcat_Java Web_内存溢出总结的主要内容,如果未能解决你的问题,请参考以下文章

C# 使用大数组内存溢出的解决办法

解决Java POI导出海量Excel数据内存溢出

JMeter内存溢出:java.lang.OutOfMemoryError: Java heap space解决方法(实测有效)

Spring 配置 web.xml (防止spring 内存溢出)

内存溢出与内存泄露知识点总结

五种内存溢出案例总结:涵盖栈深度溢出永久代内存溢出本地方法栈溢出JVM栈内存溢出和堆溢出