1. 程式人生 > >Netty是如何實現高效能的?

Netty是如何實現高效能的?

  1. 採用非同步非阻塞I/O類庫,基於Reactor模式實現,解決了傳統同步阻塞I/O模式下一個服務端無法平滑地處理線性增長的客戶端問題(解決了過去使用者數量不可控導致資源分配不可控的問題)
  2. TCP接收和傳送緩衝區使用直接記憶體代替堆記憶體,避免了記憶體複製,提升了I/O讀取和寫入的效能(零拷貝)
  3. 支援通過記憶體池的方式迴圈利用ByteBuf,避免了頻繁建立和銷燬ByteBuf帶來的效能損耗
  4. 可配置的I/O執行緒數,TCP引數等,為不同的使用者場景提供定製化的調優引數,滿足不同的效能場景
  5. 採用環形陣列緩衝區實現無鎖化併發程式設計,替代傳統的執行緒安全容器或鎖
  6. 合理地使用執行緒安全容器,原子類等,提升系統的併發處理能力
  7. 關鍵資源的處理使用單執行緒序列化的方式,避免多執行緒併發訪問帶來的鎖競爭和額外的CPU資源損耗問題
  8. 通過引用計數器及時的申請釋放不再被引用的物件,細粒度的記憶體管理降低了GC的頻率,減少了頻繁GC帶來的時延增大和CPU損耗