2011-05-01 43 views
3

我在GlassFish中面临非常恼火的例外是异常GlassFish中

SEVERE: Exception in thread "RMI RenewClean-[192.168.1.2:8686]" 
SEVERE: PermGen space 
java.lang.OutOfMemoryError: PermGen space 

我的硬件资源研究高,当我打开任务管理器,并注意资源,它的面世, 此异常迫使我重新启动我的电脑每隔10〜15分钟:(我应该怎么办?

回答

3

您需要使用-XX:MaxPermSize=256m标志,以增加PermGen空间量。 见this related SO question

为了设置此GlassFish中,使用following steps

  • 连接到您的GlassFish服务器的管理界面(本地主机:4848)
  • 移动到应用服务器>JVM设置>JVM选项和检查的内存分配给Glassfish的实例全球量(应该是这样的-Xmx512m或以上),并添加一个JVM期权的价值:

-XX:MaxPermSize=256m

内存量取决于您需要的数量。如果它继续崩溃,请增加它,但是阅读PermGen文章可能有助于确定合适的数量。

+0

很多,但这个标志在哪里?我真的很困惑。我试图在cmd中运行它时,我在bin文件夹中,但它不是一个成功的尝试! – palAlaa 2011-05-01 18:59:41

+0

我不确定这是否是最新版本,但请查看此配置指南:http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html – amccormack 2011-05-01 19:11:58

+0

Glassfish 4更改了位: http://i.imgur.com/CN8BiWF。jpg – Nadav 2014-03-14 11:18:06

2

permgem空间是玻璃鱼的最恼人的错误之一。

当您在服务器中使用大量部署或重新部署时,permgem空间是一个错误,因为服务器会保留内存并永远不会释放它。我建议你用Apache JMeter监视服务器以查看内存的数量(如果它接近最大值,则在崩溃之前重新启动它)。

要临时修复它,您必须在服务器中包含一些变量,以提高glassfish管理员的记忆体消耗,例如amccormack。

我建议你使用

-XX:PermSize =512米

-XX:MaxPermSize参数=512米

-XX:+ CMSClassUnloadingEnabled

顺便说一句,如果出现permgem空间错误,服务器将不会响应(即使对于asadmin stop-domain)。但是,如果您杀死运行glassfish的Java进程并调用asadmin start-domain,则可以轻松地重新启动。我认为它比重新启动所有服务器更快。

+0

请注意,'CMSClassUnloadingEnabled'只能与'UseConcMarkSweepGC'一起使用。后者也意味着'UseParallelGC'不能使用。请参阅http://stackoverflow.com/a/3334954/157762。 – 2013-12-12 16:30:09