玻璃鱼中的异常问题

3

我在Glassfish中遇到了一个非常烦人的异常,它是:

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

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

2个回答

3
你需要使用-XX:MaxPermSize=256m标志来增加PermGen空间的数量。 请参阅this related SO question
为了在Glassfish中设置这个,使用以下步骤
  • 连接到您的Glassfish服务器的管理界面(localhost:4848)
  • 移动到应用程序服务器>JVM设置>JVM选项并检查分配给您的Glassfish实例的全局内存总量(应该是类似于-Xmx512m或更多),并添加一个JVM选项,其值为:

-XX:MaxPermSize=256m

内存大小取决于您所需的数量。如果程序一直崩溃,请增加内存,但阅读PermGen文章可能有助于确定正确的数量。


非常感谢,但这个标志在哪里?我真的很困惑。我尝试在 bin 文件夹内运行它,但没有成功! - palAlaa
我不确定这是否是最新的,但请查看此配置指南:http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html - amccormack

2

Permgem空间是Glassfish中最令人烦恼的错误之一。

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

为了临时解决该问题,您必须在Glassfish管理员中包含一些变量,以改善服务器在Glassfish中的内存消耗,就像amccormack所说的那样。

我建议您使用

-XX:PermSize=512m

-XX:MaxPermSize=512m

-XX:+CMSClassUnloadingEnabled

顺便说一下,如果出现Permgem空间错误,服务器将不会响应(即使对于asadmin stop-domain)。但是,如果您终止运行Glassfish的Java进程并调用asadmin start-domain,则可以轻松地重新启动。我认为这比重新启动整个服务器更快。


请注意,CMSClassUnloadingEnabled 仅适用于 UseConcMarkSweepGC。后者也意味着不能使用 UseParallelGC。请参见 https://dev59.com/XnA75IYBdhLWcg3wW3y8#3334954。 - Daniel Szalay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接