Gabor Melis <[EMAIL PROTECTED]> writes:

> Ahoy 
>  
> I saw this problem discussed before without a resolution. Here is a short test 
> program: 
>  
> (defvar *users* ()) 
>  
> (defun test () 
>   (dotimes (i 1000000) 
>     (when (zerop (mod i 1000)) 
>       (print i)) 
>     (push (make-instance 'user) 
>           *users*))) 
> [crash]
> This is with 18e-9 on Debian testing/x86. SBCL behaves similarly. 

Um, isn't this simply because the GC is a (mostly-)copying collector?
That is, if you have a 512Mb heap, you'd better not have more than
256Mb of live data at the time of GC.  All of your data is live
because it can be reached through *users*.

Cheers,

Christophe
-- 
http://www-jcsu.jesus.cam.ac.uk/~csr21/       +44 1223 510 299/+44 7729 383 757
(set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b)))
(defvar b "~&Just another Lisp hacker~%")    (pprint #36rJesusCollegeCambridge)

Reply via email to