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

在javascript中垃圾收集对象之前进行清理-如何?,javascript,garbage-collection,Javascript,Garbage Collection,在本例中,我想清理一些相关数据,当表示要绘制的形状的Javascript对象超出范围时(就在垃圾收集之前),从GPU中删除webgl纹理。所以我在寻找类似finalize或destroy的东西,我可以在Javascript对象失去最后一个引用时,在垃圾收集之前,使用它来删除webgl纹理 我浏览了web和stackoverflow,几乎认为Javascript没有这个功能,但我不敢相信。。。在没有finalize等人的情况下,如何实现这一效果 因此无法知道Javascript GC何时会销毁对象

在本例中,我想清理一些相关数据,当表示要绘制的形状的Javascript对象超出范围时(就在垃圾收集之前),从GPU中删除webgl纹理。所以我在寻找类似finalize或destroy的东西,我可以在Javascript对象失去最后一个引用时,在垃圾收集之前,使用它来删除webgl纹理


我浏览了web和stackoverflow,几乎认为Javascript没有这个功能,但我不敢相信。。。在没有finalize等人的情况下,如何实现这一效果

因此无法知道Javascript GC何时会销毁对象


这个答案只是为了结束这个问题——是否存在更好的方法?

我意识到这已经晚了六年,但这个问题仍然出现在谷歌搜索上——WebGL规范似乎说,当相应的WebGLBuffer或WebGLTexture被销毁时,图形卡上的缓冲区和纹理将自动销毁。例如,见:

如果缓冲区是由与此缓冲区不同的WebGLRenderingContext生成的,则会生成无效的\u操作错误

将传递的WebGLBuffer中包含的buffer对象标记为删除,就像调用glDeleteBuffers一样。如果对象已标记为删除,则调用无效。请注意,当JS对象被销毁时,底层GL对象将自动标记为删除,但是此方法允许作者提前标记对象以删除


不,你是对的:javascript中没有析构函数。您必须手动跟踪引用。如果您正在谈论的对象超出范围并丢失了其最后一个引用,纹理不会随之被垃圾收集吗?@ItdoesNetwork否,必须显式创建和销毁webgl纹理,因为它们是图形硬件上的webgl状态的一部分,如果我是对的,并且根本没有对Javascript的引用。Javascript中没有垃圾收集或内存管理。@Bergi您好,我亲爱的引用计数头痛。你不是在跟我开玩笑吧?叹气