Wildfly 10内存泄漏问题

时间:2016-08-10 13:32:46

标签: java memory-leaks garbage-collection wildfly-10

我正在使用wildfly 10.0.0最终版本。我得到Work每当我取消部署/部署模块9-10次时,wildfly的内存使用量会继续缓慢增加并且永不减少,它再次给出ref

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

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

我尝试使用最新版本替换核心,servlet和websocket模块,从而尝试了下面链接中给出的修复,但它对我没用。

java.lang.OutOfMemoryError: GC overhead limit exceeded error

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

1 个答案:

答案 0 :(得分:17)

您必须增加堆内存。对于这个

编辑JAVA_OPTS配置文件,查找第一次出现-Xmx

然后根据需要更改JAVA_OPTS=”-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true” 选项。

如果您使用Java 8,那么

变化:

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

要:

org.jboss.el.cache.BeanPropertiesCache

资源链接:

WildFly 10 — java.lang.OutOfMemoryError: Metadata space

更新:Classes not unloaded after undeployment

Martin kouba在下面说明

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

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

         

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

    检查堆转储后,我已经确定了 person.joey.test.TestClientBean是根本原因。在这种情况下,它保留了对person.joey.test.RequestType类的硬引用,从而有效地阻止了GC中的相关ModuleClassLoader。

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

    这就是var init = function(){ $scope.getAllFriends($rootScope.rootName) .then(function(data) { console.log(data); }, function(err) { //error }); } init(); $scope.getAllFriends = function(name){ return friendService.getAllfriends(name) } 值保留在内存中的原因。 OmniFaces只会放大影响 - 如上所述,它拥有对BeanManager的引用。