我在Glassfish中遇到了一个非常烦人的异常,它是:
SEVERE: Exception in thread "RMI RenewClean-[192.168.1.2:8686]"
SEVERE: PermGen space
java.lang.OutOfMemoryError: PermGen space
我的硬件资源很高,当我打开任务管理器并注意到资源时,它是可用的,但是这个异常情况迫使我每10到15分钟重启电脑 :( 我该怎么办?
-XX:MaxPermSize=256m
标志来增加PermGen空间的数量。
请参阅this related SO question。
-XX:MaxPermSize=256m
内存大小取决于您所需的数量。如果程序一直崩溃,请增加内存,但阅读PermGen文章可能有助于确定正确的数量。
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