知识大全 Tomcat内存溢出的原因
Posted 区域
篇首语:知识的领域是无限的,我们的学习也是无限期的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Tomcat内存溢出的原因相关的知识,希望对你有一定的参考价值。
Tomcat内存溢出的原因 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Tomcat内存溢出的原因
在生产环境中tomcat内存设置不好很容易出现内存溢出 造成内存原因是不一样的 当然处理方式也不一样
这里根据平时遇到的情况和相关资料进行一个总结 常见的一般会有下面三种情况
OutOfMemoryError Java heap space
OutOfMemoryError PermGen space
OutOfMemoryError unable to create new native thread
Tomcat内存溢出解决方案
对于前两种情况 在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决 ( Xms Xmx XX PermSize XX MaxPermSize)
最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的
第一种 是堆溢出
在JVM中如果 %的时间是用于GC且可用的 Heap size 不足 %的时候将抛出此异常信息
没有内存泄露的情况下 调整 Xms Xmx参数可以解决
Xms 初始堆大小
Xmx 最大堆大小
但堆的大小受下面三方面影响
相关操作系统的数据模型( bt还是 bit)限制 ( 位系统下 一般限制在 G~ G 我在 server 系统下(物理内存 G和 G jdk )测试 M 为操作系统对内存无限制 )
系统的可用虚拟内存限制
系统的可用物理内存限制
堆的大小可以使用 java Xmx***M version 命令来测试 支持的话会出现jdk的版本号 不支持会报错
Xms Xmx一般配置成一样比较好比如set JAVA_OPTS= Xms m Xmx m
第二种 永久保存区域溢出
PermGen space的全称是Permanent Generation space 是指内存的永久保存区域 这一部分用于存放Class和Meta的信息 Class在被 Load的时候被放入PermGen space区域 它和和存放Instance的Heap区域不同 GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理 所以如果你的APP会LOAD很多CLASS的话 就很可能出现PermGen space错误 这种错误常见在web服务器对JSP进行pre pile的时候 但目前的hibernate和spring项目中也很容易出现这样的问题 可能是由于这些框架会动态class 而且jvm的gc是不会清理PemGen space的 导致内存溢出
这一个一般是加大 XX PermSize XX MaxPermSize 来解决问题
XX PermSize 永久保存区域初始大小
XX PermSize 永久保存区域初始最大值
这一般结合第一条使用 比如 set JAVA_OPTS= Xms m Xmx m XX PermSize= M XX PermSize= M
有一点需要注意 java Xmx***M version 命令来测试的最大堆内存是 Xmx与 XX PermSize的 和 比如系统支持最大的jvm堆大小事 G 那 Xmx m XX PermSize= M 是无法运行的
第三种 无法创建新的线程
这种现象比较少见 也比较奇怪 主要是和jvm与系统内存的比例有关
cha138/Article/program/Java/ky/201311/28668相关参考
Tomcat运行JavaWeb内存溢出总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
JavaMethodStack栈溢出实验什么时候会让JavaMethodStack栈溢出啊?栈的基本特点就是FILO(FirstInLastOut)如果in的太多而out的太少就好overflow
关于PHP内存溢出问题的解决方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一.内存溢出解决
探究两大Java内存溢出类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你知道如何解决Jav
知识大全 java开发中常常遇到的内存溢出问题 OutOfMemory
java开发中常常遇到的内存溢出问题OutOfMemory 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
JVM内存溢出的两大类型及解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你知道如何解决
知识大全 Linux和Windows下的Tomcat JVM内存设置
Linux和Windows下的TomcatJVM内存设置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
如何查找.NET程序内存不断上涨的原因[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 运行
如何查找.NET程序内存不断上涨的原因[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们
知识大全 数据结构考研分类复习真题 第三章 栈和队列[10]
.两个栈共享一片连续内存空间时为提高内存利用率减少溢出机会应把两个栈的栈底分别设在这片内存空间的两端( )【上海海运学院一(分)】 即使对不含相同元素的同一输入