MyEclipse启动Tomcat报outOfMerorgError

来源:互联网 发布:淘宝黑号是什么意思 编辑:程序博客网 时间:2024/05/19 09:15
Tomcat内存溢出的原因
  在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。
  这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:
  1.OutOfMemoryError: Java heap space
  2.OutOfMemoryError: PermGen space
  3.OutOfMemoryError: unable to create new native thread.
  Tomcat内存溢出解决方案
  对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx-XX:PermSize -XX:MaxPermSize)
  最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。



运行JavaWeb项目的时候抛出异常:

Exception in thread “main” Java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)

在eclipse集成tomcat环境下反复热发布应用也会出现此现象;

网上查找可知该异常产生的原因是JVM默认分配的4M运行空间过小,J2EE项目加载的类过多,造成内存溢出。

解决方案为通过添加下面的参数增加分配给JVM的内存空间:


-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m


网上的解决方案多半是针对纯Tomcat的情况,并非通过Eclipse启动的Tomcat。
或者修改eclipse.ini配置文件,不过这些方法都不适合Eclipse运行Tomcat抛出该异常的情况。

修改eclipse.ini配置文件增大的是Ecipse开发平台本身运行的JVM的空间,并非Eclipse启动Tomcat的内存空间。



解决方案:Myeclipse window->Preferences->Service->Tomcat->Tomcat7.X->jdk->VM arguments内填写
-Xms512m -Xms1024m
-XX:PermSize=256m -XX:MaxPermSize=512m
原创粉丝点击