我写了一个简单的代码来测试我的服务器性能
while (true) {
ByteBuf firstMessage = Unpooled.buffer(8);
firstMessage.writeInt(1);
firstMessage.writeInt(1);
firstMessage.writeLong(1L);
f.channel().writeAndFlush(firstMessage);
}
30秒后:
抱歉我的英文
答案 0 :(得分:0)
可能你在一个通道上创建新的缓冲区(在堆上)比在网络上发送它们更快,所以最终它们会占用整个堆,你会遇到OOM问题。
答案 1 :(得分:0)
我认为你最好在刷新完成后尝试调用firstMessage.release()
。在ByteBuf
规范中,显示ByteBuffer
正在实施ReferenceCounted
。
答案 2 :(得分:0)
您无需继续重新创建缓冲区。要么在循环中释放它,要么在循环开始之前创建它,然后在循环内重置它。