What is Memory mapping in java?

Memory mapping in java is a low level concept to make file I/O more efficiently. Generally we use stream or buffer stream to do file I/O. Mặc dù dòng đệm được sử dụng rộng rãi để tăng hiệu suất của đầu vào và đầu ra tập tin, nhưng lập bản đồ bộ nhớ là các kỹ thuật cuối cùng có thể được sử dụng để tăng hiệu suất đáng kể. Trong bản đồ bộ nhớ, các tập tin vật lý là ánh xạ với bộ nhớ và sau đó là I / O được thực hiện trong bộ nhớ ánh xạ trực tiếp. Kết quả là các I / O được thực hiện trên các tập tin vật lý bản thân. Nhưng bạn cần phải cẩn thận về cách sử dụng bộ nhớ. Nó luôn luôn khuyến khích để lập bản đồ bộ nhớ trong khối nhỏ và sau đó đọc / ghi vào file. Nó làm tăng hiệu suất và cũng phóng bộ nhớ sau khi sử dụng. Nếu bạn muốn ánh xạ toàn bộ tập tin lớn vào bộ nhớ sau đó nó có thể treo hệ thống chính nó.

Trong ví dụ sau, chúng tôi sẽ sử dụng RandomAccessFile để đọc và viết. Chúng tôi sẽ tạo ra một kênh tập tin và sau đó sử dụng bản đồ bộ nhớ để ánh xạ các tập tin với bộ nhớ. Dưới đây MappedByteBuffer là một bộ đệm trực tiếp để được sử dụng với tập tin. Trong khi lập bản đồ, bạn phải đề cập đến các điểm bắt đầu và kết thúc hoặc đọc hoặc viết. Kỹ thuật này sẽ giúp bạn để bản đồ một khu vực cụ thể của một tập tin và thực hiện các tập tin I / O.

mẫu mã:

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

import java.io. *;
nhập java.nio. *;
java.nio.channels nhập khẩu. *;

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

/**
* @ param ARGS các đối số dòng lệnh
*/

int length tĩnh = 2048; // 128 Mb
public static void main(Chuỗi[] args) throws Exception {

//Tạo RandomAccessFile và FileChannel
RandomAccessFile raf = RandomAccessFile mới(“memorymaptest.dat”, “rw”);
FileChannel fc = raf.getChannel();

//Mapping the file using file channel
MappedByteBuffer mbb1 = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
MappedByteBuffer mbb2 = fc.map(FileChannel.MapMode.READ_WRITE, 1024, 2048);

//Writing content on the mapped file
cho(int i = 0; tôi < 1024; i )
mbb1.put((byte)’x’);
System.out.println(“Finished writing xxx”);

cho(int i = 0; tôi < 1024; i )
mbb2.put((byte)’y’);
System.out.println(“Finished writing yyy”);
}
}

============================================= ============================================== Mua sách Techalpine tốt nhất trên Amazon,en,Thợ điện CT Hạt dẻ,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Thưởng thức blog này,,en,làm ơn mở rộng vốn từ,,en,techalpine.com/apache-mahout-and-machine-learning,,en? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share