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

In-Place GC is great!



    Date: Fri, 21 Dec 1990 19:59 EST
    From: barmar@Think.COM (Barry Margolin)

    I don't know how many of you have discovered Genera 8.0's In-Place GC,
    but I just wanted to praise it in public.
    ...
    Why am I hyping this now, since 8.0 has been out for quite some time?
    Because today my Lispm warned me that I had only 543,000 words of
    address space left and that I probably crash soon.  But I didn't crash,
    and now I have 4.8MW of free dynamic space, because I started up an
    in-place GC and went away to do some offline work.
    ...

You're right that the GC is a win, and that the GC itself takes very
little space.  But lest it sound too much like a miracle solution, I
hasten to point out that there are other factors that must be taken into
account:  Before anyone tries the In-Place GC for the first time, I 
recommend that they read the doc section "Swap Migration and Garbage Collection" 
which explains why under certain circumstances the size requirements for 
the In-Place GC as reported by Show GC Status are not the whole story--
and several additional megabytes may be required.  In fact, Show GC Status
refers you to this doc section, but I've never been sure that it is
forceful enough about making people read it.  It's really quite important,
and will greatly improve the chances that your experience with the In-Place
GC will be happy ones.

    ...
    Of course, I can't heap all this praise on Symbolics without at least a
    small gripe: I want a Zmail command to make it forget all the "sent
    drafts"; my Lispm has been up for over nine weeks and has about 550 sent
    messages wasting virtual memory (I'm guessing about 2MW) and slowing
    down the [Continue / Sent drafts] command (it takes time to turn 550
    objects into a menu).

The following is from my Zmail init file.  It's almost what you asked for, and I'm
sure it's easy to see how to customize it to better suit your particular tastes in
query behavior:

;-*- Mode:LISP; Syntax:Zetalisp; Package:ZWEI -*-
;KMP's private definition of Zwei toplevel command m-X Review Drafts
(DEFINE-ZMAIL-TOP-LEVEL-COMMAND COM-ZMAIL-REVIEW-DRAFTS
  "Iterate through the draft list offering to remove saved drafts.
With no argument, consider only sent drafts.
With an argument, consider all drafts."
  (NO-SEQUENCE-OK NUMERIC-ARG-OK)
  (COND ((NOT (VARIABLE-BOUNDP *DRAFT-LIST*))
	 (BARF "There is no active draft list."))
	(T
	 (LET ((QUERY-IO STANDARD-OUTPUT))
	   (DOLIST (DRAFT *DRAFT-LIST*)
	     (WHEN (AND (OR ZWEI:*NUMERIC-ARG-P* (SEND DRAFT :SENT-P))
			(Y-OR-N-P (FORMAT NIL "~A~%Delete? " (SEND DRAFT :SUMMARY-STRING))))
	       (SETQ *DRAFT-LIST* (DELQ DRAFT *DRAFT-LIST*)))))))
  DIS-NONE)

Btw, I think it's probably too late for me to get something like this
considered for inclusion into Genera 8.1, but I'll put it on my list of
things to propose for 8.2.