0

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

最初:

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

该过程完成后,您需要调整文件大小。不幸的是,没有办法使 java 取消映射,并调整文件大小(小于初始大小)它会生成异常。

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 中对内存映射文件进行低压缩的建议?谢谢。

4

0 回答 0