You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "jiangguilong (JIRA)" <ji...@apache.org> on 2015/10/19 11:27:05 UTC

[jira] [Created] (LOG4J2-1167) Memory leak for org.apache.logging.log4j.core.async.RingBufferLogEvent

jiangguilong created LOG4J2-1167:
------------------------------------

             Summary: 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="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
 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org