I would like to compute the peak memory usage of my OCaml program when it is running in compiled form as native code. I considered using the stats
API in the Gc
module, but it seems to return a snapshot at the time it is called. Is there some information in the Gc
module or some other module that I can use to get peak heap usage just before my program terminates?
You can get the current size of the major heap using Gc.stat
, see the live_words
field, multiply it by the word size in bytes to get the size in bytes (8 in a 64 bit system). It doesn't really matter but you can also add the size of the minor heap to the calculation, which is available via Gc.get ()
see the minor_heap_size
field (again in words).
You can create an alarm with Gc.create_alarm
to check the size of the heap after each major collection to get the maximum size ever used.