gpt4 book ai didi

java - FileChannel TransferFrom的评论说明

转载 作者:行者123 更新时间:2023-12-01 04:36:10 26 4
gpt4 key购买 nike

我已阅读关于 FileChanneltransferFrom 的评论

 * <p> This method is potentially much more efficient than a simple loop
* that reads from the source channel and writes to this channel. Many
* operating systems can transfer bytes directly from the source channel
* into the filesystem cache without actually copying them. </p>

这是什么意思

Many operating systems can transfer bytes directly from the source channel
into the filesystem cache without actually copying them.

如果我从一个 channel 读取然后将其写入另一个 channel ,它不会将字节传输到缓存中吗?

最佳答案

是的,如果您使用循环并从源 channel 读取到 ByteBuffer,然后将 ByteBuffer 写入 FileChannel,则写入结束时字节/数据将位于文件系统缓存中。它们也将被复制到 Java ByteBuffer 中,并且可能是从内核复制到应用程序内存(或“C 堆”),然后复制到 JVM 堆(在最坏的情况下)。

如果源 channel 兼容,那么操作系统可能能够避免复制到 JVM 堆中,甚至可能完全从内核中复制出来,而是直接从源 channel 进行复制文件页面进入目标文件页面。

如果您发现性能的任何真正改进将高度依赖于 JVM 版本、操作系统和文件系统。我不希望它的性能比 Java 编码循环更差。

罗布。

关于java - FileChannel TransferFrom的评论说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310565/

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