JDK 17的外部儲存器訪問和Nio通道非同步化 – Inside.java

banq發表於2021-04-23

當前Java平臺的NIO通道僅支援同步通道上的I / O操作,這些通道具有在受限記憶體段上的位元組緩衝區檢視。儘管有一定的侷限性,但這反映了一種實用的API約束解決方案,同時推動了外部儲存器訪問API本身的設計。
隨著外部記憶體訪問API的最新發展(針對JDK 17),記憶體段的生命週期被推遲到更高階別的抽象(資源範圍)。資源範圍管理一個或多個記憶體段的生命週期,並具有幾個不同的特徵。我們將詳細研究這些特性,但是最值得注意的是,現在有一種方法可以使共享記憶體段在一段時間內不可關閉。鑑於此,我們可以重新審視當前可用於NIO通道的記憶體段種類以及可以使用段檢視的通道種類的限制。
本文章介紹了資源範圍抽象,描述了它的特性,最後介紹瞭如何利用它來提供與不同種類的NIO通道更好的互操作性。儘管許多細節是特定於NIO通道的,但此處描述的許多關注點和方法都足夠通用,因此也可以應用於其他使用位元組緩衝區的低階框架或庫。
NIO通道分為兩大類,它們執行(讀/寫)I / O操作:
  1. 同步通道-DatagramChannel,FileChannel,SocketChannel
  2. 非同步通道-AsynchronousFileChannel,AsynchronousSocketChannel

JDK 17中的外部儲存器訪問API增強,最顯著的是資源範圍抽象,極大地改善了記憶體段和NIO通道上位元組緩衝區檢視的互操作性。NIO通道實現現在可以支援所有位元組緩衝區檢視,這些檢視在邏輯上適用於該通道提供的程式設計模型。
詳情點選標題
 

相關文章