Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j2异步记录器的内存使用情况_Java_Logging_Configuration_Log4j_Log4j2 - Fatal编程技术网

Java log4j2异步记录器的内存使用情况

Java log4j2异步记录器的内存使用情况,java,logging,configuration,log4j,log4j2,Java,Logging,Configuration,Log4j,Log4j2,我正在为log4j2使用以下配置,并注意到日志语句在刷新到磁盘之前存储在内存中。在刷新到磁盘之前,是否有一个设置来控制内存中存储了多少消息 %d%p%c{1.}[%t]%m%ex%n 您可以更改该值(默认值为256*1024&最小值为128)。这有助于配置在刷新到磁盘之前分配了多少对象 请注意,您可以控制缓冲区大小,但无法控制在刷新到磁盘之前存储在内存中的消息数量。这是这些消息生成速度与消费速度的函数。如果队列大小太小,并且在突发期间缓冲区变满,则对logger.log(…)的调用将被阻止,直

我正在为
log4j2
使用以下配置,并注意到日志语句在刷新到磁盘之前存储在内存中。在刷新到磁盘之前,是否有一个设置来控制内存中存储了多少消息


%d%p%c{1.}[%t]%m%ex%n

您可以更改该值(默认值为
256*1024
&最小值为
128
)。这有助于配置在刷新到磁盘之前分配了多少对象

请注意,您可以控制缓冲区大小,但无法控制在刷新到磁盘之前存储在内存中的消息数量。这是这些消息生成速度与消费速度的函数。如果队列大小太小,并且在突发期间缓冲区变满,则对logger.log(…)的调用将被阻止,直到缓冲区中再次有可用空间为止。因此,除非你在一个内存非常少的平台上(嵌入式或手机等),否则要小心不要把尺寸弄得太小。

更多的人似乎对编辑感兴趣,而不是实际回答。我知道编辑很重要,但我不认为任何人(知道答案的人)误解了基于原始格式的实际问题。设置配置或系统属性的最佳方式是什么?有一个有效的例子吗?谢谢!!我使用的是小型虚拟机(现在无法更改),因此内存有限。我仍然更喜欢使用这种路由,但只是使用更小的缓冲区,更频繁地写入磁盘。现在正在测试,请您评论-处理此问题的最佳方法是什么-通过配置或系统属性异步记录器ringbuffer大小目前只能通过系统属性进行配置。谢谢-这是否有效,或者我是否需要执行其他操作:system.setProperty(“AsyncLoggerConfig.RingBufferSize”,“128*1024”);您需要输入实际整数:131072