There's one question that's puzzled me for a long time: Why aren't there many (any) precise compacting GCs out there, at least in F/OSS software? Do these generally turn out to be a bad idea or something? The only one I've found so far is Mono's experimental GC.
It is really hard to write a generic precise GC (knows and follows object structure) that you can open source because every project that would want to use it has a different object structure. So pretty much every one has to be written from scratch. It is cheap and easy to throw in a conservative GC. It just isn't as good.
Squeak and the other smalltalks pretty much all have precise GCs. I'm not as familiar with the GC systems in the lisps, but I'd guess that they're all precise because the memory structures are so damn simple/clean. It is the scripting languages that start to fall down. Perl used reference counting for years, prolly still does; same with python. Ruby has a mark/sweep conservative. But hey, they work well enough. shrug
Hmm, I don't think it would be that hard to design a flexible yet efficient interface for specifying object and vtable layouts. Yes, it would create some restrictions on the clients of the GC, but I don't think they'd have to be particularly severe.