Mark and sweep algorithm