Java每日一題之Netty高性能表現在那些方面?

  • 2020 年 2 月 13 日
  • 筆記

Java每日一題之Netty高性能表現在那些方面?

答案 : (1) IO執行緒模型 :同步非阻塞,用最少的資源做更多的事情。 (2) 記憶體零拷貝 :盡量減少不必要的記憶體拷貝,實現了更高效率的傳輸。 (3) 記憶體池設計 :申請的記憶體可以重用,主要指直接記憶體。內部實現是用一顆二叉查找樹管理記憶體分配情況。 (4) 串列化處理讀寫 :避免使用鎖帶來的性能開銷。即消息的處理儘可能再同一個執行緒內完成,期間不進行執行緒切換,這樣就避免了多執行緒競爭和同步鎖。表面上看,串列化設計似乎CPU利用率不高,並發程度不夠。但是,通過調整NIO執行緒池的執行緒參數,可以同時啟動多個串列化的執行緒並行運行,這種局部無鎖化的串列執行緒設計相比一個隊里-多個工作執行緒模型性能更優。 (5) 高性能序列化協議 :支援protobuf等高性能序列化協議。 (6) 高效並發編程的體現 :volatile的大量、正確使用;CAS和原子類的廣泛使用;執行緒安全容器的使用;通過讀寫鎖提升並發性能。