在内存中映射大小为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中低重新调整内存映射文件? 感谢。