Netty buffer緩衝區ByteBuf

Netty buffer緩衝區ByteBuf

byte 做爲網絡傳輸的基本單位,所以數據在網絡中進行傳輸時須要將數據轉換成byte進行傳輸。netty提供了專門的緩衝區byte生成api ByteBuf。api

Buffer API主要包括:網絡

  • ByteBuf
  • ByteBufHolder

Netty 緩衝 API 提供了幾個優點:ui

  • 能夠自定義緩衝類型
  • 經過一個內置的複合緩衝類型實現零拷貝
  • 擴展性好,好比 StringBuilder
  • 不須要調用 flip() 來切換讀/寫模式
  • 讀取和寫入索引分開
  • 方法鏈
  • 引用計數
  • Pooling(池)

ByteBuf索引線程

  • 讀索引
  • 寫索引

ByteBuf使用模式

heap buffer(堆緩衝區)

  • 數據存儲在 JVM 的堆空間
  • GC 能夠及時釋放內存空間

direct buffer(直接緩衝區)

  • 沒有中間內存交換的二次拷貝,也就是一般說的「零」拷貝。
  • 駐留在垃圾回收掃描的堆區之外,須要手工管理內存(分配和釋放等)。
  • 在 -XX:MaxDirectMemorySize=xxM大小限制下, 使用 Heap 以外的內存, GC對此」無能爲力」,也就意味着規避了在高負載下頻繁的GC過程對應用線程的中斷影響。

composite buffer(複合緩衝區)

  • 能夠建立多個不一樣的 ByteBuf,而後提供一個這些 ByteBuf 組合的視圖。
  • 複合緩衝區就像一個列表,咱們能夠動態的添加和刪除其中的 ByteBuf,JDK 的 ByteBuffer 沒有這樣的功能。
相關文章
相關標籤/搜索