使用Eclipse(版本Indigo 3.7)调试Java项目的时候,遇到了下面的错误:

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,而Eclipse中有BUG导致eclipse.ini中的参数无法传递给Tomcat,这样在项目加载内容较多时,很容易造成内存溢出。解决方案为增加JVM的内存空间。

有一点需要注意,因为使用的是Eclipse中集成的Tomcat,因此要在下面的界面中设置。

Eclipse中运行Tomcat遇到的内存溢出错误_tomcat

Eclipse中运行Tomcat遇到的内存溢出错误_Tomcat_02

附主要的Eclipse版本代号及版本

版本代号

平台版本

主要版本

发行日期

SR1发行日期

SR2发行日期

Callisto

3.2

2006年6月26日

N/A

N/A

Europa

3.3

2007年6月27日

2007年9月28日

2008年2月29日

Ganymede

3.4

2008年6月25日

2008年9月24日

2009年2月25日

Galileo

3.5

2009年6月24日

2009年9月25日

2010年2月26日

Helios

3.6

2010年6月23日

2010年9月24日

2011年2月25日

Indigo

3.7

2011年6月22日

2011年9月23日

2012年2月24日

Juno

3.8及4.2

2012年6月27日

2012年9月28日

2013年3月1日

Kepler

4.3

2013年6月26日

2013年9月27日

2014年2月28日

Luna

4.4

2014年6月25日

N/A

N/A

Mars

4.5

2015年

N/A

N/A

Neon

4.6

2016年

N/A

N/A

Oxygen

4.7

2017年

N/A

N/A

参考资料:

1、 Eclipse中通过Tomcat运行JavaWeb项目发生内存溢出:java.lang.OutOfMemoryError: PermGen space 错误的解决方案

2、Download Eclipse

3、Java SDK Download