繁体   English   中英

Wildfly 10内存泄漏问题

[英]Wildfly 10 Memory Leak Issue

我正在使用wildfly 10.0.0最终版本。 我得到java.lang.OutOfMemoryError: GC overhead limit exceeded error每当我取消部署/部署模块9-10次时,wildfly的内存使用量继续缓慢增加而且从不减少它再次给出了java.lang.OutOfMemoryError: GC overhead limit exceeded error.

在取消部署应用程序后,Wildfly没有释放内存,并且在部署时不断增加,因此导致GC开销

早些时候,当我使用wildfly 9版本时,它没有给出这个问题。

通过用最新版本替换core,servlet和websocket模块,我尝试了下面链接中给出的修复,但它对我没有用。

https://developer.jboss.org/message/959286

谁能告诉我如何解决这个问题。

你必须增加你的堆内存。 为了这

编辑bin/standalone.conf配置文件,查找第一次出现的JAVA_OPTS

然后根据需要更改-Xmx选项。

如果你使用Java 8,那么

更改:

JAVA_OPTS=”-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true”

至:

JAVA_OPTS=”-Xms64m -Xmx2G -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=2G -Djava.net.preferIPv4Stack=true”

资源链接:

WildFly 10 - java.lang.OutOfMemoryError:元数据空间

更新: 取消部署后未卸载的类

Martin kouba在下面说

  1. undeploy并不一定意味着类卸载 - 它取决于JVM设置(-XX:MaxMetaspaceSize和Java8的朋友)
  2. 我已经验证了在附加的重现器的50个部署/取消部署周期之后(并使用-XX:MaxMetaspaceSize = 128m):

对于WildFly 10.0.0.Final“java.lang.OutOfMemoryError:Metaspace”发生

对于WildFly 10.1.0-SNAPSHOT(修复WFLY-6347合并)没有发生OOM错误(元空间被垃圾收集)

检查堆转储后,我已将org.jboss.el.cache.BeanPropertiesCache识别为根本原因。 在这种情况下,它保留对person.joey.test.TestClientBean类的硬引用,从而有效地阻止GC中的相关ModuleClassLoader。

枚举值与静态常量类似 - 即除非所有者类的类加载器,否则它不会被垃圾收集。

这就是为什么person.joey.test.RequestType值保留在内存中的原因。 OmniFaces只会放大影响 - 如上所述,它拥有对BeanManager的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM