我正在写一点OpenGL图形“引擎”。据我了解,迄今为止,应该避免在Java中使用finalize
,因为它会减慢GC。在OpenGL环境下使用finalize()的Java
我对自己做了OpenGL ressources的释放,通过注册的所有ressources(Texture
,Shader
(都实现Destroyable
))我在一个名为OpenGL
类中使用。此类具有公共静态方法render
,init
和destroy
。 所以,如果有人使用这个引擎,他必须调用的方法destroy
。
如果任何哑语程序员忘记调用OpenGL.destroy()
,是否会使用finalize()
方法销毁对象?
这将是我的finalize()
方法:
@Override
protected void finalize() {
if(!isDestroyed())
try {
destroy();
} catch (DestroyFailedException e) {}
}
没有错,除了终结器可能永远不会运行 –
我知道,这就是为什么用户/程序员应该调用'OpenGL.destroy()'。虽然谢谢! – lschmierer