我有一个简单的解码器,它扩展了FrameDecoder来解码一个二进制消息,它有一个表示消息体长度的整数头字段(4个字节)。在解码实现中,读取前四个字节以获得消息的长度。当缓冲区具有“长度”字节时,会创建一个新缓冲区来保存消息。
当系统处于正常负载时,此工作正常。但是,有时当吞吐量很高时,我注意到缓冲区已损坏(“长度”具有非常高的值)。
使用FrameDecoder是否有任何性能限制?有没有人遇到过这个问题?请分享您对可能导致此问题的看法。
更多信息:这种情况主要发生在messageReceived 阻止(等待某些操作完成)一段时间然后恢复运行的情况。
在messageReceived中阻塞调用是否有任何问题?如果是这样,有没有解决方法?请帮助我解决此问题。