после выполнения второй строки на объект 1 не осталось ссылок. Он продолжает занимать память, но воспользоваться ты им не сможешь. Поэтому GC его удалит (либо сразу, либо чуть позже, там хитрые алгоритмы). Можно форсировать очистку вызвав [gc]::collect() # но почти никогда не нужно.
я понимаю, но по факту переменная то одна $obj, объект @{id=1} создаётся в момент, когда пош его обработал и ссылку поместил в $obj. Потом был создан другой объект, новый и другая ссылка была помещена в переменную $obj. По факту переменная одна