[
https://issues.apache.org/jira/browse/LOG4J2-1167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jiangguilong updated LOG4J2-1167:
---------------------------------
Description:
when I start server,the ring buffer occupy about 20MB+ in heap ,
here is heap message:
Class Name | Objects |
Shallow Heap | Retained Heap
-----------------------------------------------------------------------------------------------------------
.*RingBuffer.* | |
|
com.lmax.disruptor.RingBuffer | 1 |
144 | >= 22,020,440
org.apache.logging.log4j.core.async.RingBufferLogEvent | 262,144 |
20,971,520 | >= 20,971,552
org.apache.logging.log4j.core.async.RingBufferLogEventTranslator| 44 |
3,168 | >= 3,168
org.apache.logging.log4j.core.jmx.RingBufferAdminMBean | 0 |
0 | >= 384
org.apache.logging.log4j.core.async.RingBufferLogEventHandler | 1 |
24 | >= 32
com.lmax.disruptor.RingBuffer$1 | 0 |
0 | >= 32
org.apache.logging.log4j.core.jmx.RingBufferAdmin | 1 |
24 | >= 24
com.lmax.disruptor.RingBufferFields | 0 |
0 | >= 24
org.apache.logging.log4j.core.async.RingBufferLogEvent$Factory | 1 |
16 | >= 16
com.lmax.disruptor.RingBufferPad | 0 |
0 |
Total: 10 entries (11,119 filtered) | 262,192 |
20,974,896 |
-----------------------------------------------------------------------------------------------------------
I think here is memory leak,do you aggree ?
======================
here is my log4j2 file config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn" monitorInterval="1800" shutdownHook="disable" >
<properties>
<property name="SERVER_ID">1</property>
<property name="GAME_NAME">ST</property>
<property name="PID">1</property>
<property name="SERVER_NAME">game</property>
<property
name="LOG_HOME">/data/log/${SERVER_NAME}/${SERVER_ID}</property>
<property
name="LINGYU_HOME">/data/stat/lingyu/${SERVER_NAME}/${SERVER_ID}</property>
</properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS}
%level [%thread][%c{1}] - %msg%n" />
</Console>
<RollingRandomAccessFile name="DevLog"
fileName="${LOG_HOME}/${SERVER_NAME}"
filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log"
immediateFlush="false">
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS}
%level [%thread][%c{1}] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="LingyuLog"
fileName="${LINGYU_HOME}/${SERVER_NAME}"
filePattern="${LINGYU_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH-mm}.log">
<PatternLayout pattern="%msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="5"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
</appenders>
<loggers>
<!-- 3rdparty Loggers -->
<Logger name="org.springframework" level="warn">
</Logger>
<Logger name="io.netty" level="warn">
</Logger>
<Logger name="org.apache.http" level="warn">
</Logger>
<Logger name="org.apache.commons" level="warn">
</Logger>
<Logger name="com.mchange.v2" level="warn">
</Logger>
<Logger name="java.sql" level="warn">
</Logger>
<!-- Game Stat logger -->
<Logger name="com.lingyu.game.service.log.lingyu" level="info"
additivity="false">
<appender-ref ref="LingyuLog" />
</Logger>
<!-- Root Logger -->
<Root level="DEBUG" includeLocation="false">
<appender-ref ref="DevLog" />
<appender-ref ref="Console"/>
</Root>
</loggers>
</configuration>
and log4j2.component.properties content:
Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
was:
when I start server,the ring buffer occupy about 20MB+ in heap ,
here is heap message:
Class Name | Objects |
Shallow Heap | Retained Heap
-----------------------------------------------------------------------------------------------------------
.*RingBuffer.* | |
|
com.lmax.disruptor.RingBuffer | 1 |
144 | >= 22,020,440
org.apache.logging.log4j.core.async.RingBufferLogEvent | 262,144 |
20,971,520 | >= 20,971,552
org.apache.logging.log4j.core.async.RingBufferLogEventTranslator| 44 |
3,168 | >= 3,168
org.apache.logging.log4j.core.jmx.RingBufferAdminMBean | 0 |
0 | >= 384
org.apache.logging.log4j.core.async.RingBufferLogEventHandler | 1 |
24 | >= 32
com.lmax.disruptor.RingBuffer$1 | 0 |
0 | >= 32
org.apache.logging.log4j.core.jmx.RingBufferAdmin | 1 |
24 | >= 24
com.lmax.disruptor.RingBufferFields | 0 |
0 | >= 24
org.apache.logging.log4j.core.async.RingBufferLogEvent$Factory | 1 |
16 | >= 16
com.lmax.disruptor.RingBufferPad | 0 |
0 |
Total: 10 entries (11,119 filtered) | 262,192 |
20,974,896 |
-----------------------------------------------------------------------------------------------------------
I think here is memory leak,do you aggree ?
======================
here is my log4j2 file config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn" monitorInterval="1800" shutdownHook="disable" >
<properties>
<property name="SERVER_ID">1</property>
<property name="GAME_NAME">ST</property>
<property name="PID">1</property>
<property name="SERVER_NAME">game</property>
<property
name="LOG_HOME">/data/log/${SERVER_NAME}/${SERVER_ID}</property>
<property
name="TENCENT_HOME">/data/stat/tencent/${SERVER_NAME}/${SERVER_ID}</property>
<property name="MOKYLIN_HOME">/data/stat/mokylin</property>
<property
name="LINGYU_HOME">/data/stat/lingyu/${SERVER_NAME}/${SERVER_ID}</property>
<property
name="R2_HOME">/data/stat/r2/${SERVER_NAME}/${SERVER_ID}</property>
<property
name="HAPPYELEMENTS_HOME">/data/stat/happyelements/${SERVER_NAME}/${SERVER_ID}</property>
</properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS}
%level [%thread][%c{1}] - %msg%n" />
</Console>
<RollingRandomAccessFile name="DevLog"
fileName="${LOG_HOME}/${SERVER_NAME}"
filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log"
immediateFlush="false">
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS}
%level [%thread][%c{1}] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="TencentLog"
fileName="${TENCENT_HOME}/${SERVER_NAME}"
filePattern="${TENCENT_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH-mm}.log">
<PatternLayout pattern="%msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="5"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="MokylinLog"
fileName="${MOKYLIN_HOME}/${GAME_NAME}_${PID}_${SERVER_ID}"
filePattern="${MOKYLIN_HOME}/${GAME_NAME}_${PID}_${SERVER_ID}_%d{yyyyMMddHH}.log">
<PatternLayout pattern="%msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="R2Log"
fileName="${R2_HOME}/${SERVER_NAME}"
filePattern="${R2_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH-mm}.log">
<PatternLayout pattern="%msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="5"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="LingyuLog"
fileName="${LINGYU_HOME}/${SERVER_NAME}"
filePattern="${LINGYU_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH-mm}.log">
<PatternLayout pattern="%msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="5"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="HappyElementsLog"
fileName="${HAPPYELEMENTS_HOME}/${SERVER_NAME}"
filePattern="${HAPPYELEMENTS_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH-mm}.log">
<PatternLayout pattern="%msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="5"
modulate="true" />
</Policies>
</RollingRandomAccessFile>
</appenders>
<loggers>
<!-- 3rdparty Loggers -->
<Logger name="org.springframework" level="warn">
</Logger>
<Logger name="io.netty" level="warn">
</Logger>
<Logger name="org.apache.http" level="warn">
</Logger>
<Logger name="org.apache.commons" level="warn">
</Logger>
<Logger name="com.mchange.v2" level="warn">
</Logger>
<Logger name="java.sql" level="warn">
</Logger>
<!-- Game Stat logger -->
<Logger name="com.lingyu.game.service.log.tencent" level="info"
additivity="false">
<appender-ref ref="TencentLog" />
</Logger>
<Logger name="com.lingyu.game.service.log.mokylin" level="info"
additivity="false">
<appender-ref ref="MokylinLog" />
</Logger>
<Logger name="com.lingyu.game.service.log.r2game" level="info"
additivity="false">
<appender-ref ref="R2Log" />
</Logger>
<Logger name="com.lingyu.game.service.log.lingyu" level="info"
additivity="false">
<appender-ref ref="LingyuLog" />
</Logger>
<Logger name="com.lingyu.game.service.log.happyelements"
level="info" additivity="false">
<appender-ref ref="HappyElementsLog" />
</Logger>
<!-- Root Logger -->
<Root level="DEBUG" includeLocation="false">
<appender-ref ref="DevLog" />
<appender-ref ref="Console"/>
</Root>
</loggers>
</configuration>
and log4j2.component.properties content:
Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
> Memory leak for org.apache.logging.log4j.core.async.RingBufferLogEvent
> -----------------------------------------------------------------------
>
> Key: LOG4J2-1167
> URL: https://issues.apache.org/jira/browse/LOG4J2-1167
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.4
> Environment: Windows 7 service pack 1
> Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
> Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
> Reporter: jiangguilong
>
> when I start server,the ring buffer occupy about 20MB+ in heap ,
> here is heap message:
> Class Name | Objects |
> Shallow Heap | Retained Heap
> -----------------------------------------------------------------------------------------------------------
> .*RingBuffer.* | |
> |
> com.lmax.disruptor.RingBuffer | 1 |
> 144 | >= 22,020,440
> org.apache.logging.log4j.core.async.RingBufferLogEvent | 262,144 |
> 20,971,520 | >= 20,971,552
> org.apache.logging.log4j.core.async.RingBufferLogEventTranslator| 44 |
> 3,168 | >= 3,168
> org.apache.logging.log4j.core.jmx.RingBufferAdminMBean | 0 |
> 0 | >= 384
> org.apache.logging.log4j.core.async.RingBufferLogEventHandler | 1 |
> 24 | >= 32
> com.lmax.disruptor.RingBuffer$1 | 0 |
> 0 | >= 32
> org.apache.logging.log4j.core.jmx.RingBufferAdmin | 1 |
> 24 | >= 24
> com.lmax.disruptor.RingBufferFields | 0 |
> 0 | >= 24
> org.apache.logging.log4j.core.async.RingBufferLogEvent$Factory | 1 |
> 16 | >= 16
> com.lmax.disruptor.RingBufferPad | 0 |
> 0 |
> Total: 10 entries (11,119 filtered) | 262,192 |
> 20,974,896 |
> -----------------------------------------------------------------------------------------------------------
> I think here is memory leak,do you aggree ?
> ======================
> here is my log4j2 file config:
> <?xml version="1.0" encoding="UTF-8"?>
> <configuration status="warn" monitorInterval="1800" shutdownHook="disable" >
> <properties>
> <property name="SERVER_ID">1</property>
> <property name="GAME_NAME">ST</property>
> <property name="PID">1</property>
> <property name="SERVER_NAME">game</property>
> <property
> name="LOG_HOME">/data/log/${SERVER_NAME}/${SERVER_ID}</property>
> <property
> name="LINGYU_HOME">/data/stat/lingyu/${SERVER_NAME}/${SERVER_ID}</property>
> </properties>
> <appenders>
> <Console name="Console" target="SYSTEM_OUT" follow="true">
> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS}
> %level [%thread][%c{1}] - %msg%n" />
> </Console>
> <RollingRandomAccessFile name="DevLog"
> fileName="${LOG_HOME}/${SERVER_NAME}"
>
> filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log"
> immediateFlush="false">
> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS}
> %level [%thread][%c{1}] - %msg%n" />
> <Policies>
> <TimeBasedTriggeringPolicy interval="1"
> modulate="true" />
> </Policies>
> </RollingRandomAccessFile>
> <RollingRandomAccessFile name="LingyuLog"
> fileName="${LINGYU_HOME}/${SERVER_NAME}"
>
> filePattern="${LINGYU_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH-mm}.log">
> <PatternLayout pattern="%msg%n" />
> <Policies>
> <TimeBasedTriggeringPolicy interval="5"
> modulate="true" />
> </Policies>
> </RollingRandomAccessFile>
> </appenders>
> <loggers>
> <!-- 3rdparty Loggers -->
> <Logger name="org.springframework" level="warn">
> </Logger>
> <Logger name="io.netty" level="warn">
> </Logger>
> <Logger name="org.apache.http" level="warn">
> </Logger>
> <Logger name="org.apache.commons" level="warn">
> </Logger>
> <Logger name="com.mchange.v2" level="warn">
> </Logger>
> <Logger name="java.sql" level="warn">
> </Logger>
> <!-- Game Stat logger -->
> <Logger name="com.lingyu.game.service.log.lingyu" level="info"
> additivity="false">
> <appender-ref ref="LingyuLog" />
> </Logger>
> <!-- Root Logger -->
> <Root level="DEBUG" includeLocation="false">
> <appender-ref ref="DevLog" />
> <appender-ref ref="Console"/>
> </Root>
> </loggers>
> </configuration>
> and log4j2.component.properties content:
> Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]