【发布时间】:2017-10-28 10:51:47
【问题描述】:
我写了一个 3d 模型库。
许多不同的模型,可以共享相同的 OpenGL 资源,如纹理、缓冲区、程序、顶点属性对象等。
当不再需要模型时,我将其删除。因此,如果 OpenGL 资源未被引用,也必须使用 OpenGL API 命令删除。
那么,以下哪个更好实施?
- 设置 OpenGL API 命令以删除对象
finalize()内的 OpenGL 资源。我在很多文章中读到finalize()是魔鬼。我相信它,因为 GC 可以随时调用(在 OpenGL 上下文销毁之后),或者根本不调用。 - 为处理 OpenGL 资源的 java 类实现引用计数系统。这需要大量代码,而且就像重新发明轮子一样,因为 GC 已经使用引用计数。
那么,在这种情况下,最好的方法是什么?
【问题讨论】:
标签: java garbage-collection reference-counting finalize