代码之家  ›  专栏  ›  技术社区  ›  Bhuvan

了解异步记录器中的环缓冲区

  •  2
  • Bhuvan  · 技术社区  · 8 年前

    在log4j2的异步记录器中 mannual link

    的默认值 log4j2.asyncLoggerConfigRingBufferSize 256 * 1024

    做什么? 256 1024 代表这里?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Remko Popma    8 年前

    0 3 是数组中的有效索引。我们想避免检查 index++; if (index > 3) { index = 0; } if

    value = array[index % 4];

    3 % 4 = 3
    4 % 4 = 0
    5 % 4 = 1
    ...
    

    value = array[index & mask];

    11 .让我们看看前面的例子:

    0011 & 0011 = 0011 (3 & 3 = 3)
    1000 & 0011 = 0000 (4 & 3 = 0)
    1001 & 0011 = 0001 (5 & 3 = 1)
    ...
    

    回到问题:环形缓冲区中的实际插槽数是 262144 256 * 1024