> Isn't this problem solved by having **deferred** reference counting? Yes, exactly. This is why it's important to distinguish between the performance of naive reference counting and reference counting approaches that have been tuned for automatic memory management.
Obviously, there are other trade-offs. For example, deferred reference counting — or for that matter, any reference counting variant that guarantees low pause times — cannot guarantee that finalizers/destructors are called in a timely fashion, which is important for an RAII-centric language such as C++.