我想知道是否有办法限制异步记录器将使用的内存量。有一个缓冲区大小限制了日志元素在写入磁盘之前的数量,如下所示:
<appender name="async" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="1024"/>
<appender-ref ref="ROLL"/>
</appender>
但是,似乎没有任何方法可以限制log4j在决定阻塞和写出其队列之前使用的内存量。默认的缓冲区大小是128 LoggingEvents,但理论上每个LoggingEvent可以占用1 GB,这可以快速占用所有的perm gen空间。
整个队列的全局设置最好。我们宁愿不限制您可用于单个日志调用的内存量,但这可能是一个不错的最后手段。
非常感谢, 麦克