gpt4 book ai didi

java - log4j 1.2 - 异步记录器内存使用限制设置

转载 作者:行者123 更新时间:2023-11-30 06:18:30 26 4
gpt4 key购买 nike

我想知道是否有办法限制异步记录器将使用的内存量。在将日志元素写入磁盘之前,有一个缓冲区大小限制了日志元素的数量,如下所示:

  <appender name="async" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="1024"/>
<appender-ref ref="ROLL"/>
</appender>

但是,在决定阻止并写出其队列之前,似乎没有任何方法可以限制 log4j 将使用的内存量。默认缓冲区大小为 128 个 LoggingEvent,但理论上每个 LoggingEvent 可能会占用 1 GB,这可能会很快占用所有永久代空间。

最好对整个队列进行全局设置。我们宁愿不限制可用于单个日志调用的内存量,但这可能是最后的选择。

非常感谢,迈克

最佳答案

不,在 Log4j 1.2 中,缓冲区只是一个 ArrayListsources非常简单。唯一可用的选项是 blocking ,它提供了当缓冲区已满时阻塞线程的选择。这将限制内存消耗,但也可能卡住应用程序,因为附加程序此时变为同步。

Log4j2 中的缓冲区实现已更改为Queue,以及 policy可用于设置缓冲区已满时的追加器行为。

关于java - log4j 1.2 - 异步记录器内存使用限制设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48692487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com