首页 > 解决方案 > Wildfly 11.0.0 最终版 java.lang.OutOfMemoryError:元空间

问题描述

自从在生产中进行新部署以来,我遇到了java.lang.OutOfMemoryError: Metaspace异常(在此更改之前,我们使用单独的 jar 进行调度,它工作正常,但由于某些网络问题,它再次停止,因此我们添加了调度程序并将其包含到 Wildfly 服务器与其他战争)环境。所以基本上我们使用的是wildfly 11.0.0最终服务器,其中我们有4个war文件,其中一个有@scheduled - 或调度程序,它每10分钟运行一次。所以通常我们会停止wildfly的服务并在新的战争部署后重新启动,但在一定时间(4到5小时)后应用程序开始变慢,当看到服务器控制台时,我可以看到java.lang.OutOfMemoryError:Metaspace如下:

WARN [org.jboss.modules] (default task-11) Failed to define class com.arjuna.ats.jta.cdi.TransactionScopeCleanup$1 in Module "org.jboss.jts" from local module loader @1e802ef9 (finder: local module finder @2b6faea6 (roots: E:\Data\wildfly-11.0.0.Final\modules,E:\Data\wildfly-11.0.0.Final\modules\system\layers\base)): java.lang.OutOfMemoryError: Metaspace

ERROR [org.jboss.as.ejb3.invocation] (default task-55) WFLYEJB0034: EJB Invocation failed on component AuditLoggerHandler for method public void com.banctec.caseware.server.logger.AuditLoggerHandlerBean.publishCaseAudit(java.lang.String,com.banctec.caseware.server.helpers.SessionHolder,com.banctec.caseware.resources.Resource[],java.lang.Long) throws com.banctec.caseware.exceptions.CaseWareException: javax.ejb.EJBTransactionRolledbackException: WFLYEJB0457: Unexpected Error

因此,对于每个操作,我们都会遇到类似的错误java.lang.OutOfMemoryError: Metaspace

因此,首先我从@scheduler 中删除了纯代码并使用了 Executor 框架,其中我使用了 5 个固定线程池,并且通过此更改我们再次部署,但同样的问题又来了。

我不确定是什么导致服务器一次又一次地停机并出现此内存泄漏问题。

在所有 4 场战争中,我们使用了 Spring boot 2.0.2。

任何帮助表示赞赏。抱歉英语不好。

标签: spring-bootmemory-leaksjbossout-of-memorywildfly-11

解决方案


您可以使用 Jprofiler 等工具来查找内存泄漏。它就像一个魅力。查看以下链接https://www.youtube.com/watch?v=032aTGa-1XM


推荐阅读