Java - OutOfMemoryError:PermGen空间

时间:2011-07-27 11:57:30

标签: java memory birt

我正在开发一个工具,允许我通过访问我也创建的网站从任何软件获取统计数据。

对于那些不知道的人,Birt是一个报告工具和一个eclipse插件。

我的问题如下:

我在托管我网站的服务器上安装了tomcat,并在其上安装了Birt ReportEngine,在我的网站上,我呼叫在线查看器以获取我的报告。

问题在于,从昨天起,当我发布报告时,出现此错误:

javax.servlet.ServletException: L'exécution de la servlet a lancé une exception
    org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)

引起:

java.lang.OutOfMemoryError: PermGen space

我真的不知道要修改哪个配置文件以避免此错误。我在网上发现了一些修改eclipse.ini文件的例子,但对于mty网站,我没有使用eclipse,我没有发现任何有用的帖子。

有人能帮助我吗?

由于

5 个答案:

答案 0 :(得分:16)

正如Thomas所说,要设置的参数是-XX:MaxPermSize。为Tomcat设置此参数的一种方法是使用CATALINA_OPTS环境变量。

适用于Windows:

set CATALINA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m

对于Linux(bash):

export CATALINA_OPTS="-Xms512m -Xmx512m -XX:MaxPermSize=256m"

检查 tomcat / bin 目录中的startup.batcatalina.batstartup.shcatalina.sh文件,并在其中添加上述命令。< / p>

(Xmx和Xms参数设置Java堆的最小和最大大小 - 存储对象。这不是你遇到的问题,但为了完整起见,我把它们包括在内。)

答案 1 :(得分:6)

您无需将以下行添加到eclipse.ini

-XX:MaxPermSize=128m

如果再次出现问题,请尝试增加该值。您还可以添加以下可选行:

-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseParNewGC 

这会将JVM的垃圾收集器更改为更优化的垃圾收集器,还可以提高性能和内存使用率。

您可能还想调整-XmxXms选项的值。尝试小幅增加(与-XX:MaxPermSize相同),因为这会增加JVM的内存占用量。

有关详细说明,请参阅此处: http://www.eclipsezone.com/eclipse/forums/t61618.html

有关JVM参数和选项的完整列表: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

答案 2 :(得分:4)

使用该JVM选项:-XX:MaxPermSize=256m(当然您可以自由选择内存量,但IIRC默认为64m,因此您需要增加内存量)。 - 请注意,这是针对Oracle的JVM(以前称为SUN的:)),其他JVM可能有不同的选项。

除此之外,尝试不要热部署过多,因为这也可能会增加PermGen空间使用率(包括Tomcat的JBoss就像这个问题一样,但我不确定对于独立的Tomcat是否也是如此)。 / p>

答案 3 :(得分:2)

这可以通过分配更多堆内存来解决。 这可以这样做: 脚步: 双击您的eclipse服务器 - &gt;打开启动配置 - &gt; Arguments-&gt;将此行粘贴到vm参数文本区域: -

-XX:MaxPermSize = 512M -Xmx1024M 这将解决你的outofmemory错误。

答案 4 :(得分:1)

我在eclipse.ini中添加了下面的行,并为我工作正常。

-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256m
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256m
相关问题