Одной из альтернатив, если у вас есть контроль над созданием ваших объектов, является обращение к ним с помощью WeakReference с помощью конструктора, который принимает ReferenceQueue. Когда они выйдут из области видимости, ссылка будет поставлена в очередь, и вы сможете создать собственный поток, опрашивающий очередь и вызывающий некоторую функцию очистки.
Почему?
Ну, это немного более эффективно, чем добавление финализаторов в ваши классы (потому что это заставляет gc выполнять их специальную обработку).
Редактировать : следующие два (варианты одной и той же статьи) описывают это:
http://java.sun.com/developer/technicalArticles/javase/finalization/
http://www.devx.com/Java/Article/30192
У Питера Лоури очень хорошее замечание, когда он говорит:
Несмотря на это, ожидание очистки ГХ может быть неэффективным, и вы можете захотеть использовать средства явной очистки ресурса, если это необходимо.
Всякий раз, когда вы можете предположить, что ваши пользователи работают на Java7, взгляните на java.lang.AutoCloseable , поскольку это поможет им сделать это автоматически при использовании новой попытки с ресурсами.