Он будет уничтожен (выгружен из памяти) в конце загрузки страницы, или если вы удалили все ссылки на него ранее. Вам не придется уничтожать его вручную, поскольку PHP всегда очищает всю память в конце скрипта.
На самом деле, вы никогда не должны звонить __ разрушать себя. Используйте unset , чтобы сбросить ссылку на объект, когда вы хотите уничтожить его. __destruct на самом деле не уничтожит ваш объект, это просто функция, которая будет автоматически вызываться из PHP непосредственно перед уничтожением, так что вы получите возможность убрать до того, как он будет уничтожен. Вы можете вызывать __destruct сколько угодно раз, не возвращая свою память.
Если, однако, вы сохранили объект в переменной сеанса, он скорее будет "спать", чем уничтожаться. См. Руководство по __ sleep . Конечно, он все равно будет выгружен из памяти (и сохранен на диск), поскольку PHP не хранит ничего в памяти между скриптами.