¿Qué es el mapeo de memoria en Java?

Asignación de memoria en Java es un concepto de bajo nivel para hacer File I / O de manera más eficiente. En general, utilizamos corriente corriente o tampón para archivo de E / S. Aunque corriente tamponada es ampliamente utilizado para aumentar el rendimiento de entrada y salida de archivos, pero la asignación de memoria es la última técnica que se puede utilizar para aumentar el rendimiento drásticamente. En el mapa de memoria, el archivo físico es mapeado con la memoria y luego la E / S se realiza en la memoria asignada directamente. Como resultado, la E / S se realiza en el archivo físico en sí. Pero hay que tener cuidado con el uso de la memoria. Siempre es recomendable asignar la memoria en trozos pequeños y luego leer / escribir en el archivo. Aumenta el rendimiento y también libera la memoria después de su uso. Si desea asignar el gran archivo entero en memoria, entonces puede bloquear el sistema en sí.

En el ejemplo siguiente, usaremos RandomAccessFile a leer y escribir. Vamos a crear un canal de archivo y luego utilizar la asignación de memoria para asignar el archivo con la memoria. Aquí MappedByteBuffer es un tampón directo para ser utilizado con el archivo. Mientras que la cartografía se debe mencionar el inicio y el punto final o la lectura o escritura. Esta técnica ayuda a cartografiar una región particular de un archivo y realizar el archivo de E / S.

Código de ejemplo:

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

importación java.io. *;
import java.nio.*;
java.nio.channels importación. *;

/**
*
* @ Author kaushikp
*/
JavaMemoryMap clase pública {

/**
* @ Param args Los argumentos de línea de comandos
*/

static int longitud = 2048; // 128 Mb
public static void main(Cadena[] args) throws Exception {

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

//Cartografía del archivo con salida a fichero
MappedByteBuffer mbb1 = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
MappedByteBuffer mbb2 = fc.map(FileChannel.MapMode.READ_WRITE, 1024, 2048);

//Escribir contenido en el archivo asignado
para(int i = 0; yo < 1024; i )
mbb1.put((byte)'X');
System.out.println(“Finalizado escritura xxx”);

para(int i = 0; yo < 1024; i )
mbb2.put((byte)’y’);
System.out.println(“Yyy terminado de escribir”);
}
}

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share