2010-08-19 90 views
2

我正在NetBeans6.8中开发Web应用程序并使用Jboss服务器部署我的应用程序。我能够正常运行该项目,但一段时间后,我得到TGIS错误如何避免java.lang.OutOfMemoryError:Netbeans中的PermGen空间

java.lang.OutOfMemoryError: PermGen space : 
之后,我不得不重新启动我的JBoss服务器

。有些时候我需要重新启动我的Netbeans IDE 任何一个可以告诉我这个错误的原因和如何避免这种

感谢 罗汉

回答

1

添加-XXMaxPermSize=256M到您的应用程序启动命令

8

加此

-XX:+UseConcMarkSweepGC 
-XX:+CMSPermGenSweepingEnabled 
-XX:+CMSClassUnloadingEnabled 
-XX:MaxPermSize=128m 
+0

我在Netbeans中添加了这些选项:工具>服务器>部署,然后在“虚拟机选项”字段中的平台选项卡。希望这可以工作......如果没有,我会删除这条评论。 – 2011-08-08 04:38:14

1

不时弹出您的服务器。你可能不喜欢这种热部署能力的限制,但问题是,当你重新部署太多次时,最终你会再次触及烫发极限。

只是反弹服务器每第n次重新部署,其中n <#导致OOM错误。

+1

+1 - 现实叮咬 – 2010-08-19 13:28:36

2

向你的堆中添加更多的megs不会解决你的问题,你可以添加无穷大&仍然耗尽了粗糙的代码。 不仅仅是JBoss的问题,我想你的代码最有可能是内存泄漏,因为它在一段时间后用完了。它是一个典型的场景。 我建议你使用JVisualVM(内置到SUN JDK6等内容)来剖析你的代码...看看堆&看看哪些对象有最多的实例,总大小明智。 一旦你解决了这些代码问题,我不认为你会想增加更多的空间到你的堆。

RGDS -ksm

0

使用此命令将在VM: -

增加堆大小为这样:

-Xms256m -Xmx512m -XX:PermSize = 64M -XX:MaxPermSize参数= 1000M

这些值应该提供给虚拟机。

之后,重新启动服务器。