Это компромисс. Люди объяснили некоторые причины, по которым некоторые языки (это на самом деле не имеет ничего общего с Lua) используют коллекторы, но не коснулись недостатков.
Некоторые языки, в частности ObjC, используют исключительно подсчет ссылок. Огромным преимуществом этого является то, что освобождение является детерминированным - как только вы отпустите последнюю ссылку, гарантируется, что объект будет немедленно освобожден. Это важно, когда у вас есть ограничения памяти. С помощью распределителя Lua, если ограничения памяти требуют предсказуемого освобождения, вы должны добавить методы для немедленного освобождения основного хранилища, что лишает смысла сбор мусора.
«WuHoUnited» ошибочно говорит, что вы не можете этого сделать - он очень хорошо работает с ObjC на iOS и с shared_ptr в C ++. Вам просто нужно понять среду, в которой вы находитесь, чтобы избежать циклов или прервать их при необходимости.