在Java中的内存映射是什么?

在Java中的内存映射是一个低级别的概念,使更有效的文件I / O. 一般来说,我们使用流或缓冲区流的文件I / O. 虽然缓冲流被广泛用于增加文件输入和输出的性能的, 但内存映射是最终的技术,可用于增加的性能急剧. 存储器映射, 文件被映射的物理内存,然后在被映射的存储器的I / O执行直接. 其结果是I / O被上执行物理文件本身. 但是,你需要小心的内存使用情况. 它始终是建议在一小块一小块的内存映射,然后对文件的读/写. 它提高了性能,并释放内存的使用后,. 如果你想整个大文件映射到内存中,然后它可能会导致系统挂起本身.

在下面的示例, 我们将使用随机存取读取和写入. 我们将创建一个文件通道,然后使用内存映射内存映射文件. 这里MappedByteBuffer是一个直接的缓冲区被用于与文件. 映射时,你必须一提的开始和结束点,或读或写. 这种技术可以帮助你映射一个特定区域的文件,执行文件I / O.

示例代码:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package JavaTips.com;

进口java.io. *;
java.nio的进口*。;
java.nio.channels进口*。;

/**
*
* @作者kaushikp
*/
公共类JavaMemoryMap的 {

/**
* @参数指定参数的命令行参数
*/

静态int长度= 2048; // 128 MB
公共静态无效的主要(串[] 参数) 抛出异常 {

//创建随机存取和文件通道
RandomAccessFile的英国皇家空军新的RandomAccessFile(“memorymaptest.dat”, “RW”);
FileChannel的FC = raf.getChannel();

//映射文件使用的文件通道
MappedByteBuffer mbb1 = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
MappedByteBuffer mbb2 = fc.map(FileChannel.MapMode.READ_WRITE, 1024, 2048);

//写作内容上的映射文件
为(INT I = 0; 我 < 1024; 我 )
mbb1.put((字节)’x’);
System.out.println(“写完XXX”);

为(INT I = 0; 我 < 1024; 我 )
mbb2.put((字节)’y’);
System.out.println(“写完YYY”);
}
}

============================================= ============================================== 在亚马逊上购买最佳技术书籍,en,电工CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share