permgen例外..尝试了一些建议但无济于事

时间:2012-12-13 23:19:42

标签: eclipse tomcat permgen

我在与permgen相关的eclipse中出现内存异常..我已经尝试更改ini文件中的值,但这没有帮助。我参考了这个网站上的各个相关帖子。我的机器配置是corei5,8 GB RAM。我正在做的开发需要我运行Tomcat和一个Android应用程序,它将向这个tomcat服务器发送http请求..我正在发布我正在使用的ini ..有人可以帮忙吗?

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
1024M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1024m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms1700m
-Xmx1700m
-XX:MaxPermSize=1700m
-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled 

1 个答案:

答案 0 :(得分:1)

是的,1700米确实是一个巨大的价值。我猜你的应用程序本身就是抛出permgen错误,而不是在启动时就像eclipse那样。 如果您的应用程序抛出错误,请将以下选项添加到catalina.bat文件中的JAVA_OPTS。 (在Tomcat的bin目录中)。

-XX:PermSize=128m -XX:MaxPermSize=256m 

此外,只需浏览您的应用程序,并确保没有为每个http请求持续加载的类。这可能是您收到此错误的原因。可能是您可以检查服务器日志以查看为每个请求加载的所有类。您可以通过向JAVA_OPTS添加以下选项来启用这些日志。

-XX:+TraceClassLoading -XX:+TraceClassUnloading

如果它与eclipse相关,而不是与您的应用程序相关,则可以添加

-XX:MaxPermSize=<value>

启动配置中的vm参数(Run As-&gt; Run Configurations-&gt;)