在Julia中,如何在为内存映射创建文件后删除该文件?
我一直在尝试使用大型数据结构,这些数据结构存储的数据量超过了ram所能处理的,因此我不得不使用mmap 这一切工作如预期,但在代码结束时,我想删除这个临时文件,因为它不再使用 我已尝试使用rm删除该文件,或在文件运行时手动删除该文件,但我没有这样做的权限 这就是我的代码的样子在Julia中,如何在为内存映射创建文件后删除该文件?,julia,memory-mapping,Julia,Memory Mapping,我一直在尝试使用大型数据结构,这些数据结构存储的数据量超过了ram所能处理的,因此我不得不使用mmap 这一切工作如预期,但在代码结束时,我想删除这个临时文件,因为它不再使用 我已尝试使用rm删除该文件,或在文件运行时手动删除该文件,但我没有这样做的权限 这就是我的代码的样子 using Mmap io = open("example.tmp", "w+") v = Mmap.mmap(io,Vector{Int64},Int64(1e9)) close(io) #Perform some
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,尝试删除/覆盖对数据的任何引用