Re: garbage collection and latency
Sergey P. Derevyago wrote:
As a rule, conservative GC behaves pretty well for the most
desktop applications but we should clearly identify the bounds of its
Stated in that form, I don't think anyone would disagree.
Strictly speaking, you could make similar comments about many
things, e.g. floating point arithmetic, but it's true that for
the most part, we're more or less aware of the restrictions, and
how to live with them, which is not necessarily the case for
conservative garbage collection. Like all tools, there will be
cases where it won't be appropriate, or where it even may cause
problems. Generally, there are work-arounds---in extreme cases,
the work-around might be to not use it at all. But of course,
unless the potential problems are recognized, the work-arounds
won't be used.
I discovered one more issue with conservative GC recently. To be
realized that a "theoretical problem" with unaligned pointers is real
My MT code uses some simple serialization to pass messages between
and the pointers are passed unaligned.
If you hide pointers, that will be a problem with any garbage
collection, not just conservative collection. If the only
pointer remaining to an object is "hidden", garbage collection
will collect it.
Possible ways of hiding pointers include memcpy'ing them to
non-aligned memory, treating them as integers and xor'ing them
(or any other fancy manipulations), and writing them to disk.
In practice, I've never seen a reasonable program in which the
only pointers to an object are hidden, but that doesn't mean
that they can't exist. (Note that hidden pointers do exist.
They're just not the only pointers to an object.)
I'm not sure why you serialize between threads; this seems to
defeat the purpose of threads (as opposed to processes).
James Kanze GABI Software
Conseils en informatique orient?e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S?mard, 78210 St.-Cyr-l'?cole, France, +33 (0)1 30 23 00 34
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]