Java Netty Unoleadheapbytbuf,奇怪且不合理的IndexofboundsException
在极少数情况下,Netty会抛出此类异常: java.lang.IndexOutOfBoundsException:readerIndex(37)+长度(2) 超过writerIndex(185):未冷却的HEAPByteBuf(ridx:37,widx:185, 第185/185章) 位于io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1405) 位于io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1392) 位于io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:872) 位于io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:880) 代码是:Java Netty Unoleadheapbytbuf,奇怪且不合理的IndexofboundsException,java,netty,Java,Netty,在极少数情况下,Netty会抛出此类异常: java.lang.IndexOutOfBoundsException:readerIndex(37)+长度(2) 超过writerIndex(185):未冷却的HEAPByteBuf(ridx:37,widx:185, 第185/185章) 位于io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1405) 位于io.netty.buffer.Abstrac
private void checkReadableBytes0(int minimumReadableBytes) {
ensureAccessible();
if (readerIndex > writerIndex - minimumReadableBytes) {
throw new IndexOutOfBoundsException(String.format(
"readerIndex(%d) + length(%d) exceeds writerIndex(%d): %s",
readerIndex, minimumReadableBytes, writerIndex, this));
}
}
(37>185-2)应该是真的,它怎么会引发异常???这看起来很奇怪。您确定不与不同的线程共享相同的
ByteBuf
?如果不是这样,请在Netty issue tracker中打开一个包含更多信息的问题或更好的复制者:
并发可能有问题吗?计算结果为true,并在显示消息之前更改。Netty是异步的,所以我敢打赌。