第一章Netty,如何优化NIO Selector的OP_READ处理
基于前文对 NIO Selector 读事件处理、粘包/拆包逻辑及 compact() 缓冲区管理的讨论,优化 OP_READ 的核心目标是减少系统调用次数、降低 GC 压力以及避免单线程阻塞。一、核心优化策略缓冲区复用(减少 GC)问题:每次 read 都 new ByteBuffer 会导致频繁 GC。优化:使用 key.attachment() 为每个连接绑定一个持久的 ByteBuffer。注意:需合理设置初始容量,避免过大浪费内存或过小频繁扩容。批量读取与处理(减少系统调用)问题:内核缓冲区可能有大量数据,单次 read 未读完会导致多次 Selector 唤醒。优化:在 isReadable 分支中使用 while 循环持续读取,直到 read() 返回 0 或 -1。代码示意:while((bytesRead=client.read(buffer))0)