OCaml 程序的堆内存使用峰值

Peak heap memory usage of an OCaml program

我想计算我的 OCaml 程序 运行 以编译形式作为本机代码时的峰值内存使用量。我考虑过在 Gc 模块中使用 stats API,但它似乎 return 是调用时的快照。 Gc 模块或其他一些模块中是否有一些信息可用于在我的程序终止之前获得峰值堆使用率?

您可以使用 Gc.stat 获取主堆的当前大小,请参阅 live_words 字段,将其乘以以字节为单位的字大小以获得以字节为单位的大小(64 中的 8位系统)。这并不重要,但您还可以将次要堆的大小添加到计算中,这可以通过 Gc.get () 获得,请参阅 minor_heap_size 字段(再次用文字表示)。

您可以使用 Gc.create_alarm 创建一个警报,以在每次主要回收后检查堆的大小,以获得曾经使用过的最大大小。