Wat is Geheugen mapping in java?

Geheugen kaart brengen in java is een laag niveau concept om file I / O efficiënter. Over het algemeen gebruiken we stroom of buffer stream naar bestand doen I / O. Hoewel gebufferde stroom wordt veel gebruikt om de prestaties van file input en output verhogen, maar memory mapping is de ultieme techniek die kan worden gebruikt om de prestaties drastisch te verhogen. Ter nagedachtenis kaart, het fysieke bestand is gekoppeld met het geheugen en de I / O wordt uitgevoerd in het toegewezen geheugen rechtstreeks. Waardoor de I / O wordt uitgevoerd op het fysieke bestand zelf. Maar je moet voorzichtig zijn met het geheugengebruik. Het is altijd aan te raden om het geheugen in kleine stukjes kaart te brengen en vervolgens lezen / schrijven op het bestand. Het verhoogt de prestaties en ook geeft het geheugen na gebruik. Als u wilt dat de hele grote bestand in kaart in het geheugen dan is het misschien het systeem hangen zelf.

In het volgende voorbeeld, zullen we gebruik maken RandomAccessFile lezen en schrijven. We zullen een bestand kanaal maken en vervolgens te gebruiken geheugen mapping om het bestand met geheugen kaart. Hier MappedByteBuffer een buffer direct voor gebruik met file. Terwijl mapping moet u melding van de start-en eindpunt of het lezen of schrijven. Deze techniek helpt u om een ​​bepaalde regio van een bestand in kaart brengen en het bestand uit te voeren I / O.

Voorbeeld code:

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

import java.io. *;
java.nio import *.;
java.nio.channels import *.;

/**
*
* @ Author kaushikp
*/
public class JavaMemoryMap {

/**
* @ Param args de opdrachtregelargumenten
*/

static int lengte = 2048; // 128 Mb
public static void main(Snaar[] args) gooit Uitzondering {

//Maak RandomAccessFile en FileChannel
RandomAccessFile raf = new RandomAccessFile(“memorymaptest.dat”, “rw”);
FileChannel fc = raf.getChannel();

//Het in kaart brengen van het bestand met behulp van bestand kanaal
MappedByteBuffer mbb1 = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
MappedByteBuffer mbb2 = fc.map(FileChannel.MapMode.READ_WRITE, 1024, 2048);

//Het schrijven van content op de toegewezen bestand
voor(int i = 0; ik < 1024; i )
mbb1.put((byte)’x’);
System.out.println(“Klaar met het schrijven xxx”);

voor(int i = 0; ik < 1024; i )
mbb2.put((byte)’y’);
System.out.println(“Klaar met het schrijven yyy”);
}
}

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share