簡體   English   中英

lmax RingBuffer with log4j 占用大量內存

[英]lmax RingBuffer with log4j takes up a lot of memory

我正在調試模式下運行 Tomcat Web 應用程序,並且使用 YourKit 分析器查看最大的對象,我發現到目前為止最大的是com.lmax.disruptor.RingBuffer的單個實例。 我認為這與 log4j 有關系,它在內部使用RingBuffer進行異步報告。 有什么辦法可以減少這個對象的內存占用嗎? 為什么這么大?

異步 Log4j2,內存泄漏?

Apache Log4j2 在異步模式下的實現使用 RingBuffer 來緩沖所有日志內容。 默認使用 262144 個插槽 (256 * 1024)。 這會導致大約 40 兆字節的初始內存儲備,並且在內存有限的環境中會導致內存頭始終充滿,因此啟動速度變慢。

要減少內存使用,請通過設置系統屬性來減少 RingBuffer 大小(槽數):

log4j2.asyncLoggerRingBufferSize=value

最小大小為 128。要分配 5Mb,請將值設置為 32768。有關詳細信息,請參閱Log4j 異步記錄器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM