java.lang.OutOfMemoryError:PermGen空间

xyz*_*xyz 11 java eclipse heap tomcat

对于所有关闭/关闭选民:我知道这是许多问题的完全重复,但我尝试了许多答案,仍然面临问题,因此增加了一个新问题.

问题: 我正在使用eclipse-helios和Tomcat 6进行春季应用程序并获得

java.lang.OutOfMemoryError: PermGen space  
Run Code Online (Sandbox Code Playgroud)

无论我如何调试我的申请

我试过
1)添加

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1024m
-XX:MaxPermSize=1204m
-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled    
Run Code Online (Sandbox Code Playgroud)

eclipse.ini
2)创建setenv.sh,并setenv.battomcat_home/bin与下面的内容

set JAVA_OPTS="-Xms256m -Xmx512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"   
Run Code Online (Sandbox Code Playgroud)

3)在eclipse中手动运行垃圾收集器.我启用了这个选项

Window -> Preferences -> General -> and select always run in background and show heap status 
Run Code Online (Sandbox Code Playgroud)

4)重启Tomcat一百次.
5)当挫折超出限制时,重新启动eclipse并有时重新启动我的机器.
最好的部分是我仍然得到错误.
我有什么办法可以尝试吗?

编辑: 我尝试运行其他应用程序,仍然得到相同的错误恕我直言我的应用程序太小,不会导致错误,我的应用程序运行良好的同事设置.

hom*_*ome 25

您的前3个选项针对2个不同的JVM.选项#1和#3修改eclipse JVM实例,这是管理IDE的JVM.选项#2修改Tomcat JVM实例.这就是为什么你java.exe在启动eclipse和Tomcat时假设你的任务管理器中有两个文件(如果是windows)(假设那些是唯一运行的Java应用程序).

重要的是要理解eclipse WTP(在我的案例中是Indigo)提供的Tomcat插件不会调用外部(OS相关)脚本来启动/停止Tomcat.相反,他们通过命令行(java.exe ...)直接生成Tomcat JVM .如果要修改Tomcat实例的JVM参数,请从eclipse中开始修改相应的内容Run Configuration.尝试修改那里的JVM参数,它应该工作(见截图). 在此输入图像描述