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