Сборка мусора не гарантированно запускается сразу, когда больше нет ссылок на объект, поэтому, вероятно, вы еще не видите, как работает метод finalize
.Вы можете попытаться принудительно запустить его, вызвав System.gc()
, но, в конечном счете, именно реализация GC должна выбирать, когда он запускает финализаторы, поэтому вам просто не следует полагаться на них вообще.
Сборка мусора для Android может работать по-разному по многим причинам, но, по крайней мере, в простом приложении командной строки JVM это работает так, как вы ожидаете:
fun main() {
var tc: TestClass? = TestClass() // test
tc = null
System.gc() // TestClass freed
}