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

标签 javascript garbage-collection

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

我浏览了网络和stackoverflow,几乎相信Javascript没有这个功能,但我不敢相信......如何在没有finalize et的情况下实现这个效果.al.?

最佳答案

我意识到这已经晚了六年,但 Google 搜索中仍然出现这个问题 - WebGL 规范似乎确实表明,当相应的 WebGLBuffer 时,显卡上的缓冲区和纹理将自动销毁> 或 WebGLTexture 被破坏。例如,参见the documentation for deleteBuffer :

If buffer was generated by a different WebGLRenderingContext than this one, generates an INVALID_OPERATION error.

Mark for deletion the buffer object contained in the passed WebGLBuffer, as if by calling glDeleteBuffers. If the object has already been marked for deletion, the call has no effect. Note that underlying GL object will be automatically marked for deletion when the JS object is destroyed, however this method allows authors to mark an object for deletion early.

关于javascript - 在 JavaScript 中对对象进行垃圾收集之前进行清理 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20097071/

相关文章:

javascript - JS 警报显示 'undefined'

javascript - 如何将对象数组中的数组中的值与对象的属性进行比较?

javascript - 从循环外中断循环

.net - .NET垃圾收集和 native 线程

javascript - Wordpress 使用 Wordpress 将 ajax 值传递给特定页面

javascript - 无法在 f :link. 页面 viewhelper 中传递 js 值 "pageUid"

Python脚本在不同的行停止并且不抛出异常

c# - 如何存储不阻止对其在范围内使用的变量进行垃圾回收的操作

python - Python语句x=x+1是如何实现的?

内联代码的 Javascript 垃圾收集