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 沒有這樣的功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM