我最近发现了Java中的finalize方法(不确定为什么之前错过了,但是它就在那里)。这似乎可以解决我正在处理的许多问题,但我想先获取更多信息。
在线上,我找到了这张图,说明垃圾收集和finalize的过程:
有几个问题:
- 这是在一个单独的线程中进行的,对吧?
- 如果我在finalize期间实例化一个新对象,那么会发生什么?这样做是否允许?
- 如果我从finalize中调用静态方法会发生什么?
- 如果我在finalize内部建立一个新的对该对象的引用会发生什么?
我想我应该解释一下为什么我感兴趣。我经常使用LWJGL,并且似乎如果我可以使用finalize来自动清理OpenGL资源的Java对象,那么我可以在API方面做一些非常好的事情。