MappedByteBuffer的使用
来源:互联网 发布:数控如何编程 编辑:程序博客网 时间:2024/06/01 09:31
其实掌握MappedByteBuffer并不难,只要记住“三方三法三特性”(我自己总结的,呵呵~~不要扔鸡蛋哦。。。)这句话就可以轻松搞定!MappedByteBuffer 只是一种特殊的 ByteBuffer ,即是ByteBuffer的子类。 MappedByteBuffer 将文件直接映射到内存(这里的内存指的是虚拟内存,并不是物理内存,后面说证明这一点)。通常,可以映射整个文件,如果文件比较大的话可以分段进行映射,只要指定文件的那个部分就可以。而且,与ByteBuffer十分类似,没有构造函数(你不可new MappedByteBuffer()来构造一个MappedByteBuffer),我们可以通过 java.nio.channels.FileChannel 的 map() 方法来获取 MappedByteBuffer 。其实说的通俗一点就是Map把文件的内容被映像到计算机虚拟内存的一块区域,这样就可以直接操作内存当中的数据而无需操作的时候每次都通过I/O去物理硬盘读取文件,所以效率上有很大的提升!
三种方式:
a. READ_ON
三个方法:
a. fore();缓冲区是READ_WRITE模式下,此方法对缓冲区内容的修改强行写入文件
b. load()将缓冲区的内容载入内存,并返回该缓冲区的引用
c. isLoaded()如果缓冲区的内容在物理内存中,则返回真,否则返回假
三个特性:
调用信道的map()方法后,即可将文件的某一部分或全部映射到内存中,映射内存缓冲区是个直接缓冲区,继承自ByteBuffer,但相对于ByteBuffer,它有更多的优点:
a. 读取快
b. 写入快
c. 随时随地写入
1 MappedByteBuffer的读取/写入文件和普通I/O流的对比
imp
imp
imp
imp
imp
imp
imp
imp
public class MapMemeryBuffer {
}
输出结果:
Read time :1874ms
Write time :360ms
把上面的程序的1换成MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_ON
2换成mbb.flip();
输出结果:
Read ByteBuf take time :16ms
Write ByteBuf take time :0ms
可见普通I/O和MappedByteBuffer是没法比的。另外在写入的时候花了0ms说明Map写入机制是根据你的更改量来决定,就是只保存修改部分的!
- MappedByteBuffer的使用
- MappedByteBuffer的使用
- MappedByteBuffer的使用
- MappedByteBuffer的使用
- MappedByteBuffer的使用
- MappedByteBuffer的使用(转)
- 使用ByteBuffer和MappedByteBuffer的简单例子
- 使用MappedByteBuffer读取大文件(1G以上)和释放MappedByteBuffer的资源
- MappedByteBuffer使用注意点
- MappedByteBuffer的Bug
- MappedByteBuffer的学习
- MappedByteBuffer
- MappedByteBuffer
- MappedByteBuffer基本使用与优点
- MappedByteBuffer的umap() JAVA Bug!
- 关于MappedByteBuffer使用后无法删除问题
- 使用 MappedByteBuffer时出现java.nio.BufferOverflowException
- MappedByteBuffer的映射内存的释放
- 刘伟XML——Schema
- c#复制文件
- MySql 集群配置
- oracle spfile&pfile 的作用 .
- response跳转的路径问题
- MappedByteBuffer的使用
- 程序开发心理学
- AIX PV VG LV详解
- 关于真机调试NSLog无法打印问题解决办法
- 序列是否能够由进出栈得到
- redhat4 sendmail 启动很慢解决方案
- 有相同数字?
- 预构 笔记
- Directshow 学习导引(转)