Bill Allombert on Wed, 15 Jan 2003 19:19:07 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: garbage collection


On Wed, Jan 15, 2003 at 11:00:57AM -0700, Richard Schroeppel wrote:
> In Lisp systems, typical garbage collector behavior is to bump memory
> by *2 or +20% when insufficient free space is returned (<20%).  If
> we've hit the upper limit and can't or won't get more, the user
> deserves a message, and maybe an opportunity to increase the limits.
> This is an area where "one behavior fits all needs" isn't right.  If
> I'm on a single user machine, I may be willing to live with the thing
> grinding to a near halt in order to let my computation finish; or
> maybe not.

In this case, if your OS has a good VM engine like Linux, Solaris of FreeBSD,
just start GP with a very large stack. Only the pages you modify are really
allocated by the system, so you do not waste memory.  At the end of a
computation you can reclaim the pages allocated by recreating the stack with
allocatemem.

With this approach, we could easily implement a 'virtual' bottom of the stack
that we could lower it when need be, until it is equal to the real bottom of
the stack. We never implemented it because it is a bit of a kludge but sometime
it is useful.

Cheers,
Bill.