StandardOpenOption.SYNC是否与MappedByteBuffers配合使用并保存我们调用MappedByteBuffer.force()?
Set<OpenOption> options = new HashSet<>();
options.add(StandardOpenOption.READ);
options.add(StandardOpenOption.WRITE);
options.add(StandardOpenOption.CREATE);
options.add(StandardOpenOption.SYNC);
FileChannel channel = FileChannel.open("file.tmp", options);
MappedByteBuffer buf = channel.map(FileChannel.MapMode.READ_WRITE, 0, channel.size());
buf.putInt(500);
buf.force(); // Needed or not?
编辑:
我假设jdk使用O_SYNC标志和mmap()调用,所以将这个问题扩展到linux世界:当使用O_SYNC标志打开底层fd时,我们是否必须调用msync()?
答案 0 :(得分:0)
我找不到要验证的文档。
使用和不使用SYNC选项在linux / windows上测试,性能类似,因此我假设文件选项SYNC / O_SYNC不适用于mmap / MappedByteBuffer操作。