arrays - OCaml - int 数组和垃圾回收

标签 arrays garbage-collection ocaml

我知道 float 组在运行时表示为带有double_array_tag和未装箱浮点的 block ,因此垃圾收集器不会扫描它(因为double_array_tag >= no_scan_tag)。

但是int 数组又如何呢? OCaml 垃圾收集器如何知道不扫描其字段?

最佳答案

如果我理解正确的话,垃圾收集器扫描int数组的字段。依次对于每个字段,它会注意到它已被拆箱,并且不再继续追查。

这种行为可能不是很有效;但主要方面是它是安全的。对于 float 数组 来说,这是不安全的,除非每个单独的 float 都被装箱(这反过来会导致空间效率低下)。

如果上述(时间)效率低下是一个问题,Bigarray 模块可能会提供解决方案。

关于arrays - OCaml - int 数组和垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42976380/

相关文章:

Java 最终匿名类与垃圾收集器

java - 增加 JVM 中的驻留内存大小是否表示内存泄漏?

ocaml - OCaml标准库中有 `flip`函数吗?

OCaml 语法 : what does >>= mean?

python - 排序 np 数组与 python 列表会产生不同的结果

使用带有 char 字符串和数组的结构的 C 程序

c# - 如何在非托管内存中实例化 C# 类? (可能的?)

regex - 如何在 OCaml 中将字符串解析为正则表达式类型

python - 分割并附加每第二个逗号到数组

c# - 如何找到两个数组的交集(最佳解决方案)