Почему финализаторы опасны?

Senior
290 просмотров
AFK Offer AI

Финализаторы в Go имеют кучу проблем. Нет гарантии вызова — если программа завершится до GC, финализатор не вызовется. Задержка — объект живёт минимум ещё один GC цикл. Порядок не определён — если A зависит от B и оба с финализаторами, B может быть финализирован раньше A. Финализатор может воскресить объект — сохранить ссылку на него. Создают pressure на GC — finalized объекты дольше живут в хипе. Вместо финализаторов используй defer, io.Closer, или контекст-менеджеры. Финализаторы — только как safety net.

Следующий вопрос

Что такое flat package structure?