Version française
Home     About     Download     Resources     Contact us    
Browse thread
Garbage collection in OCaml
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: David McClain <dmcclain@a...>
Subject: Garbage collection in OCaml
Hi,

I have a long running analysis program written in compiled OCaml (ocamlopt).
If I let it run without interference it gradually allocates more and more
memory until the system swap space is exhausted. At that point the program
bombs off with an "out of memory" errror - probably generated by the OCaml
array management routines.

OTOH, I found by tinkering that placing a Gc.compact() in a periodically
performed place, I manage to keep the entire system running within about 70
MBytes. (My machines all have 256 MB RAM or more).

I have found that placing a Gc.full_major() does virtually nothing to
prevent the exhaustion of memory, although it slows it down ever so
slightly.

The program was compiled to run with the default GC settings (whatever those
are). That is to say, I did nothing to configure the GC system at program
startup.

Is this behavior normal? Must I plant strategic Gc.compact() in my code? I
would have thought the GC would be more self monitoring.  Your comments are
most welcome, even if they are critical!

Cheers,

David McClain, Sr. Scientist
Raytheon Missile Systems Co.
Tucson, AZ