Hva er Memory kartlegging i java?

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”);
}
}

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share