Minne kartlegging i java er et lavt nivå konsept for å gjøre fil I / O mer effektivt. Vanligvis bruker vi streame eller bufre stream å gjøre fil I / O. Selv buffered stream er mye brukt for å øke ytelsen av fil inngang og utgang, men minnet kartlegging er den ultimate teknikk som kan brukes til å øke ytelsen drastisk. Til minne kart, den fysiske filen avbildes med minne og deretter I / O er utført i det kartlagte minnet direkte. Som et resultat av I / O er utført på den fysiske filen selv. Men du må være forsiktig med bruk av minne. Det er alltid anbefalt å kartlegge minnet i små biter og deretter lese / skrive på filen. Det øker ytelsen og også frigjør minnet etter bruk. Hvis du ønsker å kartlegge hele stor fil til minnet så det kan henge selve systemet.
I følgende eksempel, Vi vil bruke RandomAccessFile å lese og skrive. Vi vil opprette en fil kanal og deretter bruke minne kartlegging for å kartlegge filen med minne. Her MappedByteBuffer er en direkte buffer som skal brukes med fil. Mens kartlegging du må nevne start-og sluttpunkt eller lese eller skrive. Denne teknikken hjelper deg å kartlegge en bestemt region av en fil og utføre fil I / O.
Eksempelkode:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package JavaTips.com;
import java.io. *;
import java.nio.*;
java.nio.channels import *.;
/**
*
* @ Author kaushikp
*/
public class JavaMemoryMap {
/**
* @ Param args kommandolinjeargumentene
*/
static int lengde = 2048; // 128 Mb
public static void main(String[] args) kaster unntak {
//Lag RandomAccessFile og FileChannel
RandomAccessFile raf = new RandomAccessFile(“memorymaptest.dat”, “rw”);
FileChannel fc = raf.getChannel();
//Kartlegging filen ved hjelp filen kanal
MappedByteBuffer mbb1 = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
MappedByteBuffer mbb2 = fc.map(FileChannel.MapMode.READ_WRITE, 1024, 2048);
//Skriftlig innhold i den tilordnede filen
for(int i = 0; jeg < 1024; i )
mbb1.put((byte)’x’);
System.out.println(“Ferdig med å skrive xxx”);
for(int i = 0; jeg < 1024; i )
mbb2.put((byte)’y’);
System.out.println(“Ferdig med å skrive yyy”);
}
}