减少java中内存映射文件的大小

时间:2013-11-24 13:16:15

标签: java memory-mapped-files memory-mapping

在内存中映射大小为X的文件后,我无法减小文件大小。

最初:

ByteBuffer bMapData;
RandomAccessFile rFile;
rFile = new RandomAccessFile(file, "rw");
rFile.setLength(65535);
bMapData=rFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 65535);

完成此过程后,您需要调整文件大小。遗憾的是,没有办法制作java unmap,并且调整文件大小(小于初始大小)会产生异常。

rFile.setLength(2048); //generate a exception (because is memory mapped)

我试图“删除”映射并强制使用垃圾收集器,但它也会生成异常(但并非总是如此)。

bMapData = null;
System.gc(); 
rFile.setLength(2048); // in some cases, generate a exception
bMapData=rFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 2048);

建议在java中低重新调整内存映射文件? 感谢。

0 个答案:

没有答案