Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/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 带有log4j的lmax RingBuffer占用大量内存_Java_Tomcat_Log4j_Tomcat9 - Fatal编程技术网

Java 带有log4j的lmax RingBuffer占用大量内存

Java 带有log4j的lmax RingBuffer占用大量内存,java,tomcat,log4j,tomcat9,Java,Tomcat,Log4j,Tomcat9,我正在调试模式下运行Tomcat web应用程序,通过YourKit profiler查看最大的对象,我发现最大的是com.lmax.disruptor.RingBuffer的单个实例。我假设这与log4j有关,它在内部使用RingBuffer异步报告。有什么方法可以减少这个对象的内存占用吗?为什么这么大?来自: 异步模式下Apache Log4j2的实现使用一个RingBuffer 缓冲所有日志内容。默认情况下,使用262144个插槽(256个* 1024). 这会导致初始内存储备约为40 M

我正在调试模式下运行Tomcat web应用程序,通过YourKit profiler查看最大的对象,我发现最大的是
com.lmax.disruptor.RingBuffer
的单个实例。我假设这与log4j有关,它在内部使用
RingBuffer
异步报告。有什么方法可以减少这个对象的内存占用吗?为什么这么大?

来自:

异步模式下Apache Log4j2的实现使用一个RingBuffer 缓冲所有日志内容。默认情况下,使用262144个插槽(256个* 1024). 这会导致初始内存储备约为40 MB,并且在内存有限的环境中会导致内存不足 头部始终充满,因此开始减速

要减少内存使用,请通过设置系统属性来减少RingBuffer大小(插槽数):

log4j2.asyncLoggerRingBufferSize=value

最小尺寸为128。要分配5Mb,请将该值设置为32768。有关更多信息,请参阅。

它有多大?什么是Tomcat版本?42M,运行在Tomcat 9上,使用Java 8。42M真的是个问题吗?不是问题,但我很好奇。