Java NIO(二) 直接缓冲区与非直接缓冲区的区别

Java NIO(二) 直接缓冲区与非直接缓冲区的区别

这是非直接缓冲区

当我们的程序想要从硬盘中读取数据 需要

1.先从物理硬盘把数据读取到物理内存中

2再将内容复制到JVM的内存中

3然后读取应用程序才可以读取到内容

读写都是这样需要复制这一个动作 当遇到大文本的文件时 效率及其低下.



Java NIO(二) 直接缓冲区与非直接缓冲区的区别

直接缓冲区的是图中红线所标识的 直接在应用程序和物理磁盘中直接在内存中建立一个缓冲区在物理内存中,这样省略了复制的步骤 效率由此提高.


其中传统的io和 nio的accocate()都是非直接缓冲区.