Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Stopping and continuing GC
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-08-17 (16:44)
From: Shivkumar Chandrasekaran <shiv@e...>
Subject: Re: [Caml-list] Stopping and continuing GC

On Aug 16, 2007, at 6:04 PM, Jacques Garrigue wrote:

> This looks like a misunderstanding.
> You cannot stop the GC in ocaml: it will be triggered as soon as the
> young heap is full anyway.
> What lablGTK does is turning off compaction, which is a rather new
> feature of the GC (didn't exist when lablgtk was first written), which
> moves around objects in the old generation, which would break some
> assumptions in the code. As indicated, you can still call compaction
> explicitly, a simple way being to call Gc.major once in a
> while (using a timer for instance), as it will do compaction too when
> needed.

When I first read it I thought I got it... If I read you correctly,  
you are saying that lablGTK has tuned off compaction (somehow), but  
if I manually call Gc.major I can have it done. But, you also say  
that Gc itself is not turned off. But, I thought Gc.major was an  
intrinsic part of the gc cycle. Which would imply that compaction  
would be called anyway, even if I did not call Gc.major explicitly.  
Are you saying that the "major sweeps" (whatever Gc.major does) are  
also turned off....

OTOH, the manual says:

> If max_overhead >= 1000000, compaction is never triggered.

If lablGTK has set this, then presumably calling Gc.major will have  
no impact.

Thanks for any clarifications.