zoukankan      html  css  js  c++  java
  • Netty buffer缓冲区ByteBuf

    Netty buffer缓冲区ByteBuf

    byte 作为网络传输的基本单位,因此数据在网络中进行传输时需要将数据转换成byte进行传输。netty提供了专门的缓冲区byte生成api ByteBuf。

    Buffer API主要包括:

    • ByteBuf
    • ByteBufHolder

    Netty 缓冲 API 提供了几个优势:

    • 可以自定义缓冲类型
    • 通过一个内置的复合缓冲类型实现零拷贝
    • 扩展性好,比如 StringBuilder
    • 不需要调用 flip() 来切换读/写模式
    • 读取和写入索引分开
    • 方法链
    • 引用计数
    • Pooling(池)

    ByteBuf索引

    • 读索引
    • 写索引

    ByteBuf使用模式

    heap buffer(堆缓冲区)

    • 数据存储在 JVM 的堆空间
    • GC 可以及时释放内存空间

    direct buffer(直接缓冲区)

    • 没有中间内存交换的二次拷贝,也就是通常说的“零”拷贝。
    • 驻留在垃圾回收扫描的堆区以外,需要手工管理内存(分配和释放等)。
    • 在 -XX:MaxDirectMemorySize=xxM大小限制下, 使用 Heap 之外的内存, GC对此”无能为力”,也就意味着规避了在高负载下频繁的GC过程对应用线程的中断影响。

    composite buffer(复合缓冲区)

    • 可以创建多个不同的 ByteBuf,然后提供一个这些 ByteBuf 组合的视图。
    • 复合缓冲区就像一个列表,我们可以动态的添加和删除其中的 ByteBuf,JDK 的 ByteBuffer 没有这样的功能。
  • 相关阅读:
    DbHelperSQL
    弹出插件
    C#汉字转换拼音技术详解(高性能)
    js转移符
    服务器端世界时间(UTC)转换客户端时区时间
    asp.net分页存储过程
    开放式并发的解决办法
    关于批量数据更新的问题(C#高性能)
    Url相对路径和绝对路径的问题总结
    英文字体运用
  • 原文地址:https://www.cnblogs.com/rwxwsblog/p/7794277.html
Copyright © 2011-2022 走看看