I see a lot of misplaced hate thrown at garbage collection without warrant. Some things don't make sense to use GC for (for example, allocators or garbage collectors themselves), but modern GC is as fast if not faster than manual memory management at scale. The performance issues often attributed to GC often come from more obvious issues, like dynamic dispatch, boxing/unboxing of values, and dynamic typing.
It's just somewhat rare to see statically typed languages with modern concurrent GC. Go is one example, and Go is remarkably fast. Meanwhile Java has been running on more resource constrained systems for 30 years than Rust can target today, for example.