Programmers intent on using all of the resources available, and performing intensive tasks, should think about means other than garbage collection.
This debate is as old as the hills. I'll just point out that it's not so much that GC is terrible, so much as it's indelibly associated with managed languages that either are Java or use very Java-inspired designs (like C#) in which objects and heap allocation is treated as being nearly free.
To prove my point, I cite Unreal Engine, a serious piece of code with very tight performance constraints. It's capable of hitting high, smooth frame rates, and it uses a garbage collected heap for the core game state (lots of objects with lots of pointers between them). (reference).
None of these things are free, exactly, but if you understand their costs you can still benefit. I think one of the reasons GC has a bad name is that so much code is written in languages like Java or JavaScript by people who, for instance, don't know the difference between a heap and a stack, or were simply never taught how GC works, so they tend to see allocations as free and use as many of them as they want. Older languages like C++ are used by older, more experienced developers who naturally consider the costs of things as they go, and have a bias towards more complex error-prone code that is tighter.