在javascript中对象进行垃圾收集之前进行清理 - 如何?

时间:2013-11-20 13:17:31

标签: javascript garbage-collection

我想清理一些依赖数据(在这种情况下,从GPU中删除webgl纹理)当Javascript对象(在这种情况下,表示要绘制的形状)超出范围时 - 就在它之前垃圾回收。所以我一直在寻找像finalize()destroy ()这样的东西,在Javascript对象丢失其最后一个引用之前,我可以使用它来删除webgl纹理,然后再进行垃圾回收。

我已经浏览了网页和stackoverflow,几乎已经到了相信Javascript没有这个功能的地步,但我无法相信......如何在没有{{的情况下实现这种效果1}} et.al.?

2 个答案:

答案 0 :(得分:0)

因此无法知道Javascript GC何时会破坏对象。

(这个答案只是为了解决问题 - 是否存在更好的方法?)

答案 1 :(得分:0)

我意识到这已经晚了6年,但是Google搜索仍然出现了这个问题-WebGL规范似乎确实说,当相应的WebGLBuffer或{ {1}}被摧毁。例如参见the documentation for deleteBuffer

  

如果缓冲区是由与此不同的WebGLRenderingContext生成的,则会生成INVALID_OPERATION错误。

     

标记为删除传递的WebGLBuffer中包含的缓冲区对象,就像通过调用glDeleteBuffers一样。如果该对象已被标记为删除,则该调用无效。请注意,当JS对象被销毁时,基础GL对象将被自动标记为删除,但是此方法允许作者将对象标记为要删除的较早。