首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lmax RingBuffer和log4j占用了大量的内存

lmax RingBuffer和log4j占用了大量的内存
EN

Stack Overflow用户
提问于 2020-02-10 11:39:01
回答 1查看 2.7K关注 0票数 5

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-10 12:30:42

来自异步Log4j2内存泄漏?

在异步模式下,Apache Log4j2的实现使用RingBuffer缓冲所有日志内容。默认情况下使用262144插槽(256个* 1024)。这导致初始内存储备约为40兆字节,并且在内存有限的环境中,内存头总是满的,因此启动速度减慢。

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

代码语言:javascript
复制
log4j2.asyncLoggerRingBufferSize=value

最小尺寸是128。若要分配5Mb,请将值设置为32768。有关详细信息,请参阅Log4j异步记录器

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60149624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档