[Top][All Lists]

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

Re: What is best way to limit memory alloc?

From: Ludovic Courtès
Subject: Re: What is best way to limit memory alloc?
Date: Wed, 29 Aug 2007 13:47:30 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux)


Roland Orre <address@hidden> writes:

> What is the best way to limit the memory allocation in guile?

First, make sure Guile's GC knows about every bit of memory that you
allocate.  This means that C code run from your Guile program must use
`scm_gc_malloc ()' et al.

If you don't do this, Guile's GC will think that less memory is used
than what is actually used, so it will GC less often than needed.

Also, make sure to compile Guile with `-O2', otherwise it is more likely
that references in the stack to Scheme objects will be visible much
longer than needed.

Similarly, make sure your Scheme code doesn't unduly keeps references to
objects that are no longer needed.

> Then when performing the last step, just involving reading
> from a file, doing some string split for each line, adding
> some data and writing it back to the file line per line, the
> memory suddenly increases to 8.8 GB and then the job starts
> swapping ridicously and stops of course.

Of course, there could also be a bug.  :-)

If you get convinced that this is the case, you can try to reproduce it
with a simple test case (typically: run the suspicious code in an
endless loop and see what happens).

> I'm still running 1.7 as I haven't got the time and energy
> to change the array implementation yet.

The array API hasn't changed between 1.7.2 and 1.8.x, so you could
hopefully upgrade with little troubles.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]