Yes, and it's a huge pain! We have to pool game object instances, and sometimes even have to attempt to force GC to prevent things from freezing every few seconds.
malloc() and free() can be almost as expensive as a GC in aggregate(it's a matter of paying the cost at creation vs GC time). Pooling is a really nice performance tool, just requires a bit of hand tuning to the scenario.