取消分配大数组
Unallocate large array
我很好奇是否有一种方法可以在 OCaml 中删除和取消分配某些内容。例如,假设我有一个数组初始化使用:
let a = Array.make 10000 0;;
如何“删除”a
?
提前致谢。
简短的回答是当值无法再被访问时(由垃圾收集器)将其删除。
如果 a
的这个定义是一个全局定义,它总是可以访问的。因此它永远不会被删除。
相反,如果这是函数中的局部定义,它将在函数 returns 时被删除(或者如果最后一个引用在函数结束之前可能会更快)。
一般来说,不可变的全局值永远不会被垃圾回收。如果你想要这个,你可以使用一个可变的全局值:
let a = ref (Array.make 10000 0)
当您不再需要 a
时,您可以这样做:
a := [| |]
我很好奇是否有一种方法可以在 OCaml 中删除和取消分配某些内容。例如,假设我有一个数组初始化使用:
let a = Array.make 10000 0;;
如何“删除”a
?
提前致谢。
简短的回答是当值无法再被访问时(由垃圾收集器)将其删除。
如果 a
的这个定义是一个全局定义,它总是可以访问的。因此它永远不会被删除。
相反,如果这是函数中的局部定义,它将在函数 returns 时被删除(或者如果最后一个引用在函数结束之前可能会更快)。
一般来说,不可变的全局值永远不会被垃圾回收。如果你想要这个,你可以使用一个可变的全局值:
let a = ref (Array.make 10000 0)
当您不再需要 a
时,您可以这样做:
a := [| |]