使用Mapped FileChannel
阅读文件似乎闪电般快......但我想知道他们是如何做到的?
他们只是在一个大的(~64kB)缓冲区中阅读,然后让我继续前进吗?或者还有更多吗?
我对速度印象深刻,并希望更好地理解它背后的算法。
答案 0 :(得分:2)
在你这样做之前,他们不读任何东西,然后你读的那篇文章基本上是通过OS分页系统读取的。 open可能会花费你几乎没有,但重复读取同一块文件可能会导致重复的I / O.没有什么是免费的。
答案 1 :(得分:1)
内存映射,将文件映射到内存中,Java提供了一个库来包装它,以便您可以相对安全地访问它。
它的好处包括:
它的缺点包括:
我已经编写了几个库,使内存映射文件更易于使用,我会说当超低延迟至关重要或者您需要读取大量内存(您希望在磁盘缓存中)时我会使用它已经,你想充分利用你的磁盘缓存。
值得注意的是,内存映射不会使您的磁盘子系统更快,如果这是您的限制因素,那么读取/写入数据的方式无关紧要。