Asynchronous Netty BlockingOperation异常

Asynchronous Netty BlockingOperation异常,asynchronous,netty,Asynchronous,Netty,我正在使用Netty 4.0.25编写一个网络服务器。我正在用一个客户端程序测试它,这个程序也是用Netty编写的 =>客户端以循环方式连续向服务器发送数据约2次,如下所示 try { for(int i=0;i<noOfSubmit;i++){ ByteBuf submit_packet= createSubmitsmPacket(components, PduConstants.SUBMIT_SM); f = ctx.channel().writeAndFlush(

我正在使用Netty 4.0.25编写一个网络服务器。我正在用一个客户端程序测试它,这个程序也是用Netty编写的

=>客户端以循环方式连续向服务器发送数据约2次,如下所示

try {
  for(int i=0;i<noOfSubmit;i++){
    ByteBuf submit_packet= createSubmitsmPacket(components, PduConstants.SUBMIT_SM);
    f = ctx.channel().writeAndFlush(submit_packet);

    try {
         f.await();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("SENDING DATA "+count++);
    submit_packet = null;
  }
} catch (Exception e) {
   e.printStackTrace();
}        

例如,防止GC收集不必要对象的解决方案是使用基于池的ByteBufAllocator。这些分配器的优点是,使用过的对象返回到池中,而不是由gc收集,但是您需要确保在释放它们之后不使用它们

您可以在处理程序中使用它们,如下所示:

ByteBuf submit_packet = PooledByteBufAllocator.DEFAULT.buffer(initialCapacity, maxCapacity);
createSubmitsmPacket(submit_packet, components, PduConstants.SUBMIT_SM);
f = ctx.channel().writeAndFlush(submit_packet);
其中,
initialCapacity
被tebuf返回的初始容量替换,对于
maxCapacity
也是如此


如果您需要对ByteBuf进行更多控制,则应创建PooledByteBufAllocator的新实例,并将参数传递给该实例,说明要执行的操作。

请将堆栈跟踪添加到问题中。
ByteBuf submit_packet = PooledByteBufAllocator.DEFAULT.buffer(initialCapacity, maxCapacity);
createSubmitsmPacket(submit_packet, components, PduConstants.SUBMIT_SM);
f = ctx.channel().writeAndFlush(submit_packet);