![](/img/trans.png)
[英]How to unmap a file from memory mapped using FileChannel in java?
[英]java mapped FileChannel implementation
使用Mapped FileChannel
讀取文件似乎很快……但是我想知道他們是如何做到的?
他們只是在讀一個大(〜64kB)的緩沖區,然后讓我進入那個緩沖區嗎? 還是還有更多呢?
我對速度印象深刻,想更好地了解其背后的算法。
他們只有在您讀完之后才會閱讀任何東西,然后您基本上可以通過OS分頁系統閱讀您所閱讀的文章。 打開可能幾乎不會花費您什么,但重復讀取同一文件片段可能會導致重復的I / O。 沒有什么是免費的。
內存映射,將文件映射到您的內存中,並且Java提供了一個包裝它的庫,因此您可以相對安全地訪問它。
它的好處包括:
它的缺點包括:
我已經編寫了一些庫,使內存映射文件更易於使用,我想說的是,當超低延遲非常關鍵,或者您需要讀取大量的內存,而您希望這些內存已經存在於磁盤緩存中時,我會使用它。想要充分利用磁盤緩存。
值得注意的是,映射的內存並不能使您的磁盤子系統更快,如果這是您的限制因素,則用哪種方式讀取/寫入數據都無關緊要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.