我正在调试模式下运行Tomcat应用程序,通过YourKit分析器查看最大的对象,我发现到目前为止最大的是com.lmax.disruptor.RingBuffer的单个实例。我假设这与log4j有关,它在内部使用RingBuffer来异步报告。有什么方法可以减少这个对象的内存占用吗?为什么这么大?
发布于 2020-02-10 12:30:42
在异步模式下,Apache Log4j2的实现使用RingBuffer缓冲所有日志内容。默认情况下使用262144插槽(256个* 1024)。这导致初始内存储备约为40兆字节,并且在内存有限的环境中,内存头总是满的,因此启动速度减慢。
若要减少内存使用量,请通过设置系统属性来减小RingBuffer大小(槽数):
log4j2.asyncLoggerRingBufferSize=value最小尺寸是128。若要分配5Mb,请将值设置为32768。有关详细信息,请参阅Log4j异步记录器。
https://stackoverflow.com/questions/60149624
复制相似问题