gpt4 book ai didi

java - 如果我使用 swapoff -a 关闭交换并使用 RandomAccessFile 写入一些数据,它会每次刷新到磁盘吗?

转载 作者:行者123 更新时间:2023-12-02 01:12:28 25 4
gpt4 key购买 nike

如果我使用 swapoff -a 关闭交换并使用 RandomAccessFile 写入一些数据,它会每次刷新到磁盘吗?假设我没有调用 RandomAccessFile.getFD().sync()

最佳答案

RandomAccessFile 本身不进行任何缓冲,因此对 RandomAccessFile 的调用会直接进入操作系统 write 调用。

如果您调用getChannel,然后调用FileChannel.map,运行时可能会使用mmap来映射文件。在这种情况下,问题就变成了,对 mmap 缓冲区的写入何时会刷新到磁盘?显然,操作系统刷新写入缓冲区的每个字节是疯狂的。答案是操作系统会定期将更改刷新到磁盘,或者您可以调用 msync 或(来自 Java)MappedByteBuffer.force

swapoff -a 不会影响任何此行为。对于RandomAccessFile,运行时调用write,这与内存或交换空间无关。在 mmap 的情况下,程序可见的缓冲区不是由交换空间支持,而是由文件支持。

关于java - 如果我使用 swapoff -a 关闭交换并使用 RandomAccessFile 写入一些数据,它会每次刷新到磁盘吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59168124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com