知识大全 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运行Java Web内存溢出总结

Tomcat运行JavaWeb内存溢出总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 内存溢出场景模拟

  JavaMethodStack栈溢出实验什么时候会让JavaMethodStack栈溢出啊?栈的基本特点就是FILO(FirstInLastOut)如果in的太多而out的太少就好overflow

知识大全 关于PHP内存溢出问题的解决方法

关于PHP内存溢出问题的解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.内存溢出解决

知识大全 探究两大Java内存溢出类型

探究两大Java内存溢出类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你知道如何解决Jav

知识大全 java开发中常常遇到的内存溢出问题 OutOfMemory

java开发中常常遇到的内存溢出问题OutOfMemory  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 JVM内存溢出的两大类型及解决方案

JVM内存溢出的两大类型及解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你知道如何解决

知识大全 Linux和Windows下的Tomcat JVM内存设置

Linux和Windows下的TomcatJVM内存设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 如何查找.NET程序内存不断上涨的原因[2]

如何查找.NET程序内存不断上涨的原因[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  运行

知识大全 如何查找.NET程序内存不断上涨的原因[1]

如何查找.NET程序内存不断上涨的原因[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们

知识大全 数据结构考研分类复习真题 第三章 栈和队列[10]

  .两个栈共享一片连续内存空间时为提高内存利用率减少溢出机会应把两个栈的栈底分别设在这片内存空间的两端(   )【上海海运学院一(分)】  即使对不含相同元素的同一输入