最佳答案
吉莉
DSYNC是SYNC的子集。
SYNC要求所有数据(由文件系统管理的文件数据和文件元数据)同步写出,而DSYNC要求仅文件数据同步写出。至于开销,我认为这是一个巨大的“取决于文件系统”。使用诸如写时复制,卷影复制,版本控制,校验和等概念查看现代文件系统……我想尝试阻塞整个写操作直到完成所有工作可能会变得很昂贵。
数据丢失的可能性是一个更令人困惑的答案。异步文件I/O的优点是底层文件系统或磁盘实际上可以批处理或排序写操作,以避免随机I/O并以更顺序的方式构造写操作。
很好,但是要回答您的数据丢失问题,可能是在刷新之前位于缓存中的所有挂起的写操作都有可能丢失。简而言之,很难说。
简而言之,排序如下:
我应该说,我假设所有这些问题都与Java 7中的新AsynchronousFileChannel有关。如果不是这种情况,我深表歉意。
关于java - StandardOpenOption.SYNC与StandardOpenOption.DSYNC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8263995/