官方文档说明了插槽数,但没有说明每个插槽的大小:
我搜索了一下,但也没有得到太多信息。
SO:Understand Ring Buffer in async Logger
我正在运行一项服务,该服务以很高的频率记录巨大的堆栈跟踪(〜50行),从而导致总体延迟增加。当我修剪那些堆栈轨迹时,等待时间减少了。我以〜3MB / s的速度记录日志,并且记录器环形缓冲区的大小为默认值(256 * 1024)。我想知道我是否正在填充此队列,从而导致延迟增加。如果设置为256 * 1024,此队列的大小以MB为单位?
答案 0 :(得分:0)
延迟可能是由Log4j 2 ThrowableProxy引起的。目前正在对此进行调查,请参见https://issues.apache.org/jira/browse/LOG4J2-2391
要查找内存中环形缓冲区插槽的实际大小,请使用JOL工具(http://openjdk.java.net/projects/code-tools/jol/)。从JOL文档中:
...大量使用Unsafe,JVMTI和Serviceability Agent(SA)解码实际的对象布局,覆盖区和引用。这使JOL比其他工具更加准确...