【发布时间】:2019-04-17 22:12:12
【问题描述】:
当 Javascript 对象(在这种情况下,表示要绘制的形状)超出范围时,我想清理一些相关数据(在这种情况下,从 GPU 中删除 webgl 纹理) - 就在它之前垃圾收集。所以我一直在寻找类似finalize() 或destroy () 的东西,当Javascript 对象在垃圾收集之前失去它的最后一个引用时,我可以用它来删除webgl 纹理。
我浏览了web和stackoverflow,几乎到了相信Javascript没有这个功能的地步,但我不敢相信......在没有@987654323的情况下如何实现这个效果@ 等人?
【问题讨论】:
-
不,你是对的:javascript 中没有析构函数。您必须手动跟踪引用。
-
如果你说的那个对象超出了范围并丢失了它的最后一个引用,纹理不会随之被垃圾收集吗?
-
@itdoesntwork 不,必须显式创建和销毁 webgl 纹理,因为它们是 webgl 状态的一部分(如果我是对的,它存在于图形硬件上,并且没有参考返回到Javascript)。
-
Javascript 中没有垃圾收集或内存管理。
-
@Bergi 你好,亲爱的引用计数问题。你不是在跟我开玩笑吧?叹息。
标签: javascript garbage-collection