0
StandardOpenOption.SYNC가 MappedByteBuffers와 함께 작동하고 MappedByteBuffer.force()를 호출하여 저장하지 않습니까?기본 채널이 StandardOpenOption.SYNC로 열릴 때 MappedByteBuffer를 플러시해야합니까?
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() 호출을 사용 가정 : 우리가 msync() 할 때 FD는 O_SYNC 플래그 열립니다 기본 전화해야합니까?
SYNC 옵션은'write()'호출에만 적용됩니다. – EJP
그래, 그런 식으로 나타나지만 확인할 수있는 문서를 찾지 못했습니다. ( – vkx
mmap force/msync 성능은 O_SYNC와 거의 같지만 Linux에서는 쓰기가 가능하지만 mmap/msync와 동일한 방법으로 30-40x 느려지므로 원하는 이유가 있습니다. 그것이 우리를 구할지를 아는 것 – vkx