Pointers from Outer Space

ET emergent@eval-apply.com
Tue, 3 Jun 1997 09:17:19 -0400


Peter.VanEynde asked:

   If you want to collect the
   garbage in memory, you need to know what memory is referenced by the
   swapped out memory. And how can you know that without swapping it in, or
   keeping an expensive "pointers from outer space" list? But I know only a
   little about GC, so can someone enlighten me?

Actually, the list of pointers from outer space isn't all that expensive,
and it
is what the LispM's used.

Symbolics people correct me if I'm wrong, but I remember Moon giving a
talk about their ephemeral GC.  When a page was swapped out to disk, 
it was examined for pointers to ephemeral space, and the information was
entered into a btree that was kept in physical memory.

At LMI, since the address space was smaller, there were 2 bits per page
that indicated the volatility (LMI's name for ephemeral) of the most
volatile
pointer on the page.  When you flipped a level, you could examine the
page table to see if a page needed to be brought back into memory to
be scavenged.

At Lucid, there was a sparse array that performed the same function.

				~jrm