Windows:移动先前在内存中映射的文件失败

Windows:移动先前在内存中映射的文件失败,第1张

Windows:移动先前在内存中映射文件失败

在Java中,文件映射是垃圾收集的,并且没有支持的方法来强制销毁映射。

FileChannel.map()
文档中:

缓冲区及其表示的映射将保持有效,直到缓冲区本身被垃圾回收为止。

映射一旦建立,就不依赖于用于创建它的文件通道。特别是,关闭通道对映射的有效性没有影响。

在Sun的JDK中,可以通过在执行文件移动之前强行破坏映射来测试这确实是罪魁祸首:

import sun.nio.ch.DirectBuffer;import sun.misc.Cleaner;[...]if (byteBuffer.isDirect()) {    Cleaner cleaner = ((DirectBuffer) byteBuffer).cleaner();    cleaner.clean();}// move file


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5019266.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存