Glassfish中的例外情况

时间:2011-05-01 18:22:35

标签: exception glassfish

我在玻璃鱼面临一个非常恼火的例外

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

我的硬件资源很高,当我打开任务管理器并注意到资源时,它是可用的, 这个例外迫使我每10到15分钟重新启动一次电脑:(我该怎么办?

2 个答案:

答案 0 :(得分:3)

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

要在Glassfish中进行设置,请使用following steps

  • 连接到Glassfish服务器的管理界面(localhost:4848)
  • 转到 Application Server > JVM设置> JVM选项并检查分配给您的Glassfish实例的全局内存量(应该类似于-Xmx512m或更多)并添加一个带有值的JVM选项:
  

-XX:MaxPermSize=256m

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

答案 1 :(得分:2)

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

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

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

我建议你使用

  

-XX:PermSize =512米

     

-XX:MaxPermSize参数=512米

     

-XX:+ CMSClassUnloadingEnabled

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