Netty-tips

NioEventLoop:1 select,2 处理select所得,3 处理任务(普通和定时,按ioRatio确定时间)
read,accept和connect,write全部在这里处理,不像mina按Processor,Connector,Acceptor区分。
accept处理:和read处理完全一致,Unsafe.read()
NioByteUnsafe(NioSocketChannel): read, 读数据,fireChannelRead
NioMessageUnsafe(NioServerSocketChannel),accept,读(其实accept到SocketChannel),fireChannelRead,到ServerBootstrapAcceptor处将accet所得Channel注册到EventLoop

粘包、拆包:存在Nagle和Mss,考虑ByteToMessageDecoder,根据长度字段,固定长度,分隔符等拆分或拼装为应用层报文。

服务端:生成NioServerSocketChannel, 设置options和attrs,ServerBootstrapAcceptor等,注册到EventLoop,不关注任何事件,NioServerSocketChannel绑定某个地址,关注accept事件

客户端:connect和读写都在一个EventLoopGroup,不分开。

PooledByteBufAllocator:分配direct和heap的ByteBuf
PoolArena:含Init(0-25),00(1-50),25(25-75),50(50-100),75(75-100),100(100)这6个PoolChunkList
初始在Init内,超过25进入00ChunkList,后面5个可来回移动,Init支持到0,即完全释放也不会回收,00回不到Init了,若在00内完全释放,则内存回收
PoolChunkList:含内存使用率上下限,ChunkList之间双向链接,持有头Chunk,相邻ChunkList的内存使用率重合,避免Chunk频繁来回移动
PoolChunk:Chunk之间双向链接,11层,2048个叶子节点,每个节点有个计数,如8层节点计数为8,则此节点可分配,为9则其有单个子节点被分配了,为12则已经完全被分配了
PoolSubPage:8k,bitmap(8个long,512位),最小可按16字节分配,在init时根据分配的大小来确定bitmap的使用长度,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值