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