ImageSegments and massive GC
Stephen Pair
spair at acm.org
Thu Aug 23 16:31:23 UTC 2001
> At 09:56 AM 8/23/2001 -0400, Stephen Pair wrote:
> >Would this work? Has it been done before?
>
> Whenever you have a multi-region garbage collector, you have
> to worry about
> cross-region circularities. Generally, you have to
> simultaneously collect
> all regions that participate in a circularity in order to
> recover it. My
> first impression, is that you will have such issues with your
> proposal.
At a macro level, references among regions can detected efficiently
because for each region, we maintain a set of in pointers and a set of
out pointers. Therefore a GC process would need only to ask for the
region for it's set of out-pointers and make an assumption that a
reference to any in-pointer will find all of the region's out-pointers
(not true, but a practical assumption). Therefore, at a macro level,
cyclic references among regions could be detected.
Wrt distributed GC...if every computer was considered a root in a global
GC scheme (and Squeak the OS), then any computer (a region) could
periodically request validation of it's in-pointers from the referencing
computer (region). That request could cause the referencing computer to
kick off an introspective GC (if it hasn't done one in a while) to
validate the out-pointers to the requesting computer. A computer that
is unplugged from the network for a sufficient amount of time might
reconnect, only to find that some of it's out-pointers are dead. It's
not as thorough as a complete mark and sweep of the entire network, but
wouldn't it be a practical solution?
> What you describe sounds very similar to various distributed GC
> schemes. You are just applying them locally. There is considerable
> published literature on distributed GC.
>
> Allen Wirfs-Brock
I suspected that was probably the case. I've read a couple of books,
but unfortunately, they seem to get bogged down in language specific
issues.
- Stephen
More information about the Squeak-dev
mailing list
|