This is a strange distinction. So something is garbage because it is not used? In Rust, a Vec is only deallocated at the end of the function, regardless of when it is actually stopped being used. Are those garbage too?
At this point, garbage just means whatever does not follow RAII. And RAII is not the best solution either. For throughput reasons, GC languages can be siginificantly faster exactly because it doesn't have to clean those "garbage" at every step.