在 Julia 中,如何在为内存映射创建文件后删除文件?

In Julia, How do you delete a file after creating it for memory-mapping?

我尝试使用大型数据结构来存储超过 ram 可以处理的内容,结果我不得不使用 mmap。

这一切都按预期工作,但是在代码末尾我想删除这个临时文件,因为它不再被使用。

我试过使用 rm 删除文件或在文件 运行 时手动删除它,但我没有这样做的权限。

这就是我的代码的样子。


using Mmap

io = open("example.tmp", "w+")
v = Mmap.mmap(io,Vector{Int64},Int64(1e9))
close(io)

#Perform some actions on vector v

#attempt to delete here, rm("example.tmp") returns an EACCES error though

我希望能够在不再使用时自动删除此 .tmp 文件,我该怎么做?

using Mmap

io = open("example.tmp", "w+")
v = Mmap.mmap(io,Vector{Int64},Int64(1e9))
close(io)

#Perform some actions on vector v

v = nothing # delete reference to memory mapped data
GC.gc() # call garbage collector to be safe

rm("example.tmp") # should work now

只要存在对内存映射数据的引用,您就可能 运行 进入权限问题。毕竟你仍然可以使用 v。尝试通过设置 v = nothing 并在之后调用 GC 来 delete/overwrite 任何对数据的引用。