Java – OutOfMemoryError:PermGen空间
我正在开发一个工具,允许我通过访问我也创建的网站从任何软件获取统计数据。
对于那些不知道的人,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,我没有找到任何有用的post。
有人能帮助我吗 ?
谢谢
正如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.bat
和catalina.bat
或startup.sh
和catalina.sh
文件,并在其中添加上述命令。
(Xmx和Xms参数设置Java堆的最小和最大大小 – 存储对象的位置。这不是您遇到的问题,但为了完整起见,我将它们包括在内。)
您不需要将以下行添加到eclipse.ini
-XX:MaxPermSize=128m
如果再次出现问题,请尝试增加该值。 您还可以添加以下可选行:
-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseParNewGC
这会将JVM的垃圾收集器更改为更优化的垃圾收集器,还可以提高性能和内存使用率。
您可能还想调整-Xmx
和Xms
选项的值。 尝试小幅增加(与-XX:MaxPermSize
相同),因为这会增加JVM的内存占用量。
有关更详细的详细信息,请参阅此处: http : //www.eclipsezone.com/eclipse/forums/t61618.html
有关JVM参数和选项的完整列表, 请访问 : http : //www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
使用该JVM选项: -XX:MaxPermSize=256m
(当然您可以自由选择内存量,但IIRC默认为64m,因此您需要增加内存量)。 – 请注意,这是针对Oracle的JVM(以前称为SUN的:)),其他JVM可能有不同的选项。
除此之外,尝试不要热部署太多,因为这也可能会增加PermGen空间使用率(包括Tomcat的JBoss就像这个问题一样,但我不确定对于独立的Tomcat是否也是如此)。
这可以通过分配更多堆内存来解决。 这可以这样做:步骤:双击你的eclipse服务器 – >打开启动配置 – >参数 – >在vm参数文本区域粘贴这一行: –
-XX:MaxPermSize = 512M -Xmx1024M这将解决您的outofmemory错误。
我在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