Today I got this from emacs:
Warning: memory in use exceeds lisp pointer size Killing some buffers may delay running out of memory. However, certainly by the time you receive the 95% warning, you should clean up, kill this Emacs, and start a new one.
I’ve never seen that before. The process was just 126 megs and about two months old.
Lisp uses tagged pointers, that is, they use a few bits of
the pointer to specify pointer type, which leaves fewer
bits around to actually point to the object. If you’re
on 32bit arch, 128mb == 2^27, and, say, 5 bits are used
by Emacs Lisp to tag the pointers, then you’d really be
running out of it.
But I’m not emacs (or even lisp) guru, and all of the above is just my educated guess, so it can easily be wrong.
I assumed that the tag-bits in a pointer used the two lowest bits by only allowing pointers to be at even 32bit positions.
Use emacs-22 (from CVS), the size has now been increased to 256MB. Besides that it has quite a lot of very useful features.
More than 2 tag bits are needed to distiguish between the different
data types: integers, symbols, strings, conses, floats, etc.