java.lang.OutOfMemoryError: PermGen space



如何防止这种情况发生?

Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
Exception in thread "Thread-2" java.lang.OutOfMemoryError: PermGen space

例如,如果我经常重新加载数据表页面,就会发生这种情况。我知道垃圾收集器有问题。。

我使用的是Eclipse Java EE IDE、JSF2、richfaces4

这是Tomcat特有的。它是一个相当糟糕的热发布程序/热部署程序,并且内存泄漏。我建议在Eclipse中关闭服务器配置屏幕的自动发布,只要您想反映保存的更改,就手动重新启动Tomcat。如果你只有一个项目,重新启动应该不会花太多时间。

例如,Glassfish在热发布方面要强大得多(而且速度更快!)。至于如何安装Glassfish并将其集成到Eclipse中进行JSF 2.0开发,请查看本教程。

您必须为tomcat JVM的PermGenSpace分配更多空间。

这可以通过JVM参数来完成:-XX:MaxPermSize=128m

默认情况下,PermGen空间是64M(它包含所有已编译的类,所以如果类路径中有很多jar(类),那么您确实可以填充这个空间)。

附带说明一下,您可以使用JVisualVM监视PermGen空间的大小,甚至可以使用YourKit Java Profiler 检查其内容

如果您的webapps文件夹中有更多的项目,则会出现此异常。删除某些项目此异常不会出现。

相关内容

  • 没有找到相关文章

最新更新