This means that it is easy to determine the type of an object at runtime. This requires using hidden headers on objects. These may even provide real-time guarantees. They can be generalized into concurrent collections. This exploits typical lifetime characteristics, and avoids undue overhead from long-lived objects.
Most collections are of small area, hence pause times are typically short.
This is performed recursively, each pointer in the object is also eliminated. A strait forward implementation maintains a counter attached to each object. This counter is not visible at the language level. The benefit is that reference counting is real-time . Reclamation can be delayed, and performed a little at a time.