Как работает finalize() в Java?

Итак, я недавно обнаружил метод finalize в Java (не уверен, почему я пропустил его раньше, но там это). Это похожеможет быть ответом на многие вопросы, с которыми я работаю, но я хотел сначала получить немного больше информации.

В сети я нашел вот такую ​​диаграмму, иллюстрирующую процесс сборки мусора и финализации:

This describes the order of operations involving finalize and the JGC:

Пара вопросов:

  1. Это происходит в отдельном потоке, правильно?
  2. Что произойдет, если я создам экземпляр нового объекта во время финализации? Это разрешено?
  3. Что произойдет, если я вызову статический метод из finalize?
  4. Что произойдет, если я создам новую ссылку на объект из finalize?

Полагаю, я должен объяснить, почему меня это интересует. Я много работаю с LWJGL, и кажется, что если бы я мог использовать finalize, чтобы объекты Java автоматически очищали ресурсы OpenGL, то я мог бы сделать некоторые действительно хорошие вещи с точки зрения API.

5
задан CodeBunny 4 March 2012 в 16:51
поделиться