我正在寫一點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