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