It’s impossible to verify, but some of the workarounds in very large c apps seem like they have about as much overhead as A modern GC.
It’s impossible to verify, but some of the workarounds in very large c apps seem like they have about as much overhead as A modern GC.
The effectiveness of some key optimizations were sensitive to how tight we could make tail latencies for important operations, so a GC always had an unacceptable cost to the extent it occasionally introduced a stall at an inopportune moment. If GC stalls were more like 10 microseconds, consistently, that would be much more viable. I have no idea if that is realistically achievable.
GC's don't exist in abstract, and there are plenty of GC enabled languages that also have value types and manual memory management capabilities.
There is no need to throw everything away when the right GC enabled language is chosen in first place.
Though for completeness’s sake I will add that in case of the JVM, variable tail latency still can be experienced due to the JIT compiler.
On Google Earth, even sub-millisecond pauses would have been too much, we had to fight pretty hard for every sliver of performance we could get.