在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. *;
import 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