You can't
have your missle defense software pause to do garbage
collection when you're trying to shoot down an incoming ballistic
missile.
That's why I like reference counting. It doesn't have the long pauses
that other garbage collection systems have, when the variable goes out
of scope, you decrement, last guy frees. Seems pretty simple.
It's better, but the free() might cause a varying amount of work,
say due to coallescing.
Garbage collection these days doesn't have to be long-pause ‘stop the
world’. Go's GC thread runs concurrently with the others, for example.