Netty/mmap/DirectBuffer

    最近在阅读netty相关的书籍和代码,根据自己的理解作下述汇总和图示。

  一. Netty基础:mmap和directBuffer


DirectBuffer:直接使用用户态(堆外内存)与内核态传递数据,省略了用户态(堆内内存)和用户态(堆外内存)之间的数据传递;
mmap:用户态和内核态共用磁盘缓冲区作为公共虚拟内存,省略了用户态和内核态之间的数据传递;

  二. Netty对NIO的API进行了封装,作以下性能提升点

   1. 使用多路复用技术,提高处理连接的并发性 
    2. 零拷贝-Netty的接收和发送数据采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝 
    3. Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象进行一次操作 
    4. 内存池:为了减少堆外直接内存的分配和回收产生的资源损耗问题,Netty提供了基于内存池的缓冲区重用机制 
    5. 使用主从Reactor多线程模型,提高并发性 
    6. 采用了串行无锁化设计,在IO线程内部进行串行操作,避免多线程竞争导致的性能下降 
    7. 默认使用Protobuf的序列化框架 

    可结合下述Netty框架图理解上述性能提升点

    三. netty的NIOEventLoopGroup源码执行流程图

     转自 https://blog.csdn.net/bwh0520/article/details/82598269

    è¿éåå¾çæè¿°

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值