Automatic memory management that traces which objects are reachable by a chain of references from root objects and deallocates the rest