首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wildfly 10内存泄漏问题

Wildfly 10内存泄漏问题
EN

Stack Overflow用户
提问于 2016-08-10 13:32:45
回答 1查看 26.3K关注 0票数 19

我使用的是野蝇10.0.0最终版本。每当我卸载/部署模块9-10次时,我就会得到java.lang.OutOfMemoryError: GC overhead limit exceeded error,同时,通配符的内存使用量也在缓慢增加,而且永不减少,这再次给出了java.lang.OutOfMemoryError: GC overhead limit exceeded error.

野生蝇在取消部署应用程序后并没有释放内存,并且不断增加部署,从而导致GC开销。

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

我尝试了在下面的链接中给出的修正,用最新的版本替换了核心、servlet和websocket模块,但是它没有对我起作用。

代码语言:javascript
运行
复制
https://developer.jboss.org/message/959286

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

EN

回答 1

Stack Overflow用户

发布于 2016-08-10 14:02:11

您必须增加堆内存。为此

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

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

如果您使用Java 8,那么

更改:

代码语言:javascript
运行
复制
JAVA_OPTS=”-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true”

至:

代码语言:javascript
运行
复制
JAVA_OPTS=”-Xms64m -Xmx2G -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=2G -Djava.net.preferIPv4Stack=true”

资源链接:

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

更新:类在卸载后未卸载。

马丁·库巴如下

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

对于WildFly 10.0.0,最后出现"java.lang.OutOfMemoryError: Metaspace“。 对于WildFly 10.1.0-快照( WFLY-6347合并的修复),没有发生OOM错误(垃圾收集了metaspace)

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

Enum值被类似于静态常量--也就是说,除非所有者类的类装入器是垃圾收集,否则它不是垃圾收集。

这就是为什么person.joey.test.RequestType值保留在内存中的原因。OmniFaces只放大了影响--正如上面提到的,它持有对BeanManager的引用。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38874940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档