Как заменить finalize на примере слабых ссылок:
Создать класс наследник от слабой ссылки
Реализовать в этом классе хранилище с сильными ссылками на обьекты слабых ссылок (чтобы слабые ссылки не были удалены сборщиком преждевременно)
Реализовать в этом классе очередь ссылок
Описать логику очистки зависимых ресурсов
Создать поток демон (какой пиздос), который будет обрабатывать очередь ссылок и закрывать ресурсы, удалять сильные ссылки на обьекты слабых ссылок для полной очистки их из памяти сборщиком мусора.
Важно! Выделение ресурсов должно происходить непосредственно в классе слабой ссылки, иначе референт будет очищен и мы просто ничего не подчистим