Memory management under OCAML

From: David McClain (
Date: Mon Aug 30 1999 - 19:54:06 MET DST

From: "David McClain" <>
To: <>
Subject: Memory management under OCAML
Date: Mon, 30 Aug 1999 10:54:06 -0700

I am trying to understand the behavior of the interactive OCAML system. If I
repeatedly perform the following line:

    let x = Array.create 1000000 0.0;;

then each subsequent execution should shadow the previous ones making them
unreachable. Yet the GC never collects the old bindings, even after I
manually perform Gc.full_major() or Gc.compact(). Why is this?

In another vein, whenever I start OCAML in interactive mode on WinNT 4.0 it
grabs about 10 MBytes (give or take some). Yet when I compile my own code in
native code OCAMLOPT, my programs typically grab about 100 MBytes or so,
even before any overt memory allocations occur. Why is this? Should I even
be concerned about it? and is there a mechanism to preallocate a fixed
amount of heap for the runtime images I create?

D. McClain
Sr. Scientist
Raytheon Systems Co.
Tucson, AZ

This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:24 MET