Sometimes recursion is not the best design.
I went from 300M memory usage to 3.5M.

The speed increased at least 3-5X too.


Thanks for the insight.

Randy


-----Original Message-----
From: Sam Steingold [mailto:sds@gnu.org]
Sent: Thursday, May 17, 2001 9:23 AM
To: Justice, Randy -CONT(DYN)
Cc: clisp-list@lists.sourceforge.net
Subject: Re: [clisp-list] Memory Error Message


> * In message <B4CA1F5D8D23D411ADC7009027E791BF013ED29F@pens0394.cnet.navy.Mil>
> * On the subject of "[clisp-list] Memory Error Message"
> * Sent on Thu, 17 May 2001 07:19:23 -0500
> * Honorable "Justice, Randy -CONT\(DYN\)" <Randy.Justice@cnet.navy.mil> writes:
>
> I was running clisp overnight.  I get the following error message(s)
>
> Trying to make room through a GC...
> Cannot map memory to address 0X202EA000 . errno = ENOMEM: Not enough memory.
> Trying to make room through a GC...
> Unable to load interpreter /lib/ld-linudx.so.2
> Unable to load interpreter /lib/ld-linudx.so.2
> Cannot map memory to address 0X202EA000 . errno = ENOMEM: Not enough memory.
> Trying to make room through a GC...
>
> Is this an OS or CLISP message?

OS is refusing CLISP request to allocate more memory.
CLISP is trying to get more room through GC, but it fails to get enough.
ENOMEM is the errno which is set when malloc(3) fails to allocate the
requested space.

You have to rethink your application - maybe you are keeping too much
unnecessary data still available (if it were garbage, CLISP would have
collected it).  If you really need all that data, you will probably need
to get more physical RAM or swap space.

CLISP is very frugal on memory usage, so I would guess that it is not
our fault.

--
Sam Steingold (http://www.podval.org/~sds)
Support Israel's right to defend herself! <http://www.i-charity.com/go/israel>
Read what the Arab leaders say to their people on <http://www.memri.org/>
We are born naked, wet, and hungry.  Then things get worse.