What is Memory mapping in java?

Memorija mapiranje u Javi je nizak koncept razini kako bi file I / O učinkovitije. Općenito koristimo potok ili tampon potok napraviti file I / O. Iako bufferom struja naširoko koristi za povećanje performansi datoteka ulaz i izlaz, a memorija mapiranje je krajnji tehnika koja se može koristiti za povećanje učinkovitosti drastično. U mapi memorije, fizička datoteka je mapiran s memorijom i I / O obavlja se u mapiranog memoriji izravno. Kao rezultat toga, I / O obavlja se na fizičku datoteku sama. No, morate biti oprezni o korištenju memorije. Uvijek je preporučljivo za mapiranje memorije u male komade, a zatim čitanje / pisanje na datoteku. To povećava učinkovitost i oslobađa memoriju nakon uporabe. Ako želite mapirati cijeli veliku datoteku u memoriju onda to može objesiti samog sustava.

U sljedećem primjeru, ćemo koristiti RandomAccessFile za čitanje i pisanje. Mi ćemo stvoriti datoteku kanal, a zatim koristiti memorijsku mapiranje mapiranje datoteku s memorijom. Ovdje MappedByteBuffer je izravna tampon koji će se koristiti u datoteci. Dok mapiranje morate spomenuti početnu i završnu točku ili čitanje ili pisanje. Ova tehnika pomaže da karte određenu regiju datoteke i obavljati datoteku I / O.

Primjer koda:

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

uvoz java.io. *;
uvoz java.nio. *;
uvoz java.nio.channels. *;

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

/**
* param argumenata naredbenog retka argumente
*/

statički duljina int = 2048; // 128 Mb
public static void main(Gudački[] args) baca iznimku {

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

//Mapiranje datoteku pomoću datoteke kanala
MappedByteBuffer mbb1 = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
MappedByteBuffer mbb2 = fc.map(FileChannel.MapMode.READ_WRITE, 1024, 2048);

//Pisanje sadržaja na preslikati datoteku
za(int i = 0; ja < 1024; ja )
mbb1.put((byte)'X');
System.out.println(“Završio pisanje xxx”);

za(int i = 0; ja < 1024; ja )
mbb2.put((byte)'A');
System.out.println(“Završio pisanje yyy”);
}
}

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share