使用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版本代号及版本
版本代号 | 平台版本 | 主要版本 | 发行日期 | 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