我们将应用程序从自己的小型日志记录组件移至Log4j2。在我们最大的安装中,该应用程序每天可运行约60.000个工作。
我们编写了自己的Appender,它使用Hibernate写入数据库(请参阅InnovaIntegrationsportalHibernateAppender)。
在运行约36小时后,JVM因内存不足异常/错误(OOME)而崩溃,分析hprof后,我发现有763.5MB的org.apache.logging.log4j.core.appender.AbstractManager类。
查看随附的分析屏幕截图(2019-04-12 13_20_45-eclips ...)
https://issues.apache.org/jira/browse/LOG4J2-2589
更深入地讲,我尝试在测试类中重构行为并分析其结果(请参见屏幕截图1)。
对我来说似乎是内存泄漏。
InnovaIntegrationsportalHibernateAppender
package de.itout.innova.log4j.innova_log4j_appender;
import de.itout.innova.ssp.entities.ssp.entities.*;
import de.itout.jpa.util.*;
import java.io.*;
import java.util.*;
import javax.persistence.*;
import org.apache.logging.log4j.core.*;
import org.apache.logging.log4j.core.appender.*;
import org.apache.logging.log4j.core.config.plugins.*;
import org.apache.logging.log4j.core.layout.*;
/**
*
* @author swendelmann
*/
@Plugin(name = "InnovaIntegrationsportalHibernateAppender", category = "Core", elementType = "appender")
public class InnovaIntegrationsportalHibernateAppender extends AbstractAppender
{
private String schnittstelle;
private String version;
private String laufId;
private EntityManager em;
public InnovaIntegrationsportalHibernateAppender(String name, Filter filter, Layout<? extends Serializable> layout)
{
super(name, filter, layout);
}
public InnovaIntegrationsportalHibernateAppender(String name, …Run Code Online (Sandbox Code Playgroud)