SSH部署到tomcat内存溢出-OutOfMemoryError 的解决办法

转载 2012年03月28日 21:28:21

使用ssh集成项目后,部署几次后会就会出现OutOfMemoryError PermGen space系统错误,通过在网上查阅资料,发现这个错误并不是Tomcat的问题,而JVM设计自身的一个缺陷,JVM把内存分了不同的区, PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,类加载的时候就存放在这个区域中。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收! 

      老外一直认为这是sun JVM的一个bug,曾有这样的评价:“A bug this critical is open since 2003? Absolutely shameful”--  我觉得SUN在这个BUG上确实有些丢脸。没想到至今这个问题还没未能解决,有人给出最好的解决方法是不使用JDK,使用BEA的JRokit,当然现在Oracle,BEA,SU已经成为一家人了,我想这个问题应该会更快有更好的解决方案。

好了还是说说如何解决问题吧,网上大量的资料说在tomcat这样设置:SET JAVA_OPTS= -Xms64m -Xmx512m,但经过本人的测试,没有一点作用,详细看了JVM内存的分配机制后才知道,-Xms和--Xmx是调整Java heap space(即堆内存)的大小,ava heap space区域中存放对象,GC会收集这块区域。

如果出现的异常类型是:OutOfMemoryError: Java heap space,那应该设置 SET JAVA_OPTS= -Xms64m -Xmx512m。

如果出现的异常类型是:OutOfMemoryError  PermGen space,那应该设置set JAVA_OPTS=-Xms128m -Xmx512m  -XX:PermSize=128M -XX:MaxPermSize=256m

 

常见的有两种设置方法:

如果在开发环境中启动tomcat,以eclipse为例:选择window->Preferences->MyEclipse-servers-Tomcat->JDK 在右侧框Optional Java  VM arguments中加入:-Xms128m -Xmx512m  -XX:PermSize=128M -XX:PermSize=256M

      如果独立启动tomcat,修改tomcat/bin/catalina.bat文件,查找set JAVA_OPTS,找到后把这一行修改为:

set JAVA_OPTS=-Xms128m -Xmx512m  -XX:PermSize=128M -XX:MaxPermSize=256M,设置的时候要注意:-Xms+X:PermSize不能大于系统支持的最大JVM的大小。具体大小根据自己内存大小调整吧。

相关文章推荐

SSH部署到Tomcat内存溢出-OutOfMemoryError 的解决办法

使用ssh集成项目后,部署几次后会就会出现OutOfMemoryError PermGen space系统错误,通过在网上查阅资料,发现这个错误并不是Tomcat的问题,而JVM设计自身的一个缺陷,J...

eclipse启动项目报出jvm内存溢出异常解决办法java.lang.OutOfMemoryError: Java heap space

Java.lang.OutOfMemoryError: Java heap space  =================================================== ...

Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。在解决ja...

tomcat内存溢出解决办法

  • 2012年12月05日 16:58
  • 77KB
  • 下载

tomcat out of memory 解决办法 java.lang.OutOfMemoryError: Java heap space

使用Java程序从数据库中查询大量的数据时出现异常: java.lang.OutOfMemoryError: Java heap space 在JVM中如果98%的时间是用于GC且可用的 Heap ...

Tomcat6下应用太多出现java.lang.OutOfMemoryError: PermGen space【解决办法】

一 修改 Tomcat\bin\catalina.bat 文件 找到    set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apac...

tomcat OutOfMemoryError出现的三种情况解决办法

Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般...
  • k12104
  • k12104
  • 2013年03月12日 14:24
  • 2215

项目不能部署到tomcat解决办法

  • 2015年11月18日 21:45
  • 2KB
  • 下载

tomcat的内存溢出问题及解决办法

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH部署到tomcat内存溢出-OutOfMemoryError 的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)