Why many programmers don't like GC?

claptrap clap at trap.com
Thu Jan 14 12:36:12 UTC 2021


On Wednesday, 13 January 2021 at 20:06:51 UTC, H. S. Teoh wrote:
> On Wed, Jan 13, 2021 at 06:58:56PM +0000, Marcone via 
> Digitalmars-d-learn wrote:
>> I've always heard programmers complain about Garbage Collector 
>> GC. But I never understood why they complain. What's bad about 
>> GC?
>
> It's not merely a technical issue, but also a historical and 
> sociological one.  The perception of many people, esp. those 
> with C/C++ background, is heavily colored by the GC shipped 
> with early versions of Java, which was stop-the-world, 
> inefficient, and associated with random GUI freezes and jerky 
> animations.  This initial bad impression continues to persist 
> today esp. among the C/C++ crowd, despite GC technology having 
> made great advances since those early Java days.
>
> Aside from skewed impressions, there's still these potential 
> concerns with the GC:
>
> (1) Stop-the-world GC pauses (no longer a problem with modern
> generational collectors, but still applies to D's GC);
>
> (2) Non-deterministic destruction of objects (D's dtors are not 
> even
> guaranteed to run if it's a GC'd object) -- you cannot predict 
> when an
> object will be collected;
>
> (3) GC generally needs more memory than the equivalent manual 
> memory
> management system.

I think you also have to consider that the GC you get with D is 
not state of the art, and if the opinions expressed on the 
newsgroup are accurate, it's not likely to get any better. So 
while you can find examples of high performance applications, AAA 
games, or whatever that use GC, I doubt any of them would be 
feasible with Ds GC. And given the design choices D has made as a 
language, a high performance GC is not really possible.

So the GC is actually a poor fit for D as a language. It's like a 
convertible car with a roof that is only safe up to 50 mph, go 
over that and its likely to be torn off. So if you want to drive 
fast you have to put the roof down.




More information about the Digitalmars-d-learn mailing list