Direct Memory讀寫流程分析

之前我們看出來了直接內存和傳統IO操作的區別,我們針對底層流程加以說明。

BybeBuffer方式

在這裏插入圖片描述如圖所示,我們一般的IO讀取過程時,程序需由用戶態切換成內核態,當從ByteBuffer中讀取數據時,系統會先從磁盤把文件讀取到系統內存區,再從系統內存讀取到Java堆內存,需要多一次內存拷貝過程。

Direct Memory方式

在這裏插入圖片描述
Direct Memory方式情況下,Java程序會直接從系統內存中開闢一塊內存空間,對應的是我們的ByteBuffer.allocateDirect(_256M);這句代碼,這部分內存系統內存可以訪問,Java程序也可以直接訪問,直接就減少了交互過程,這個就是直接內存會工作快點的原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章