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