JavaScript对象的终结器

假设我有一些asm.js代码,可能是由emscripten创建的。 假设它具有某种相当大的堆分配结构,它被asm.js函数返回为一个指针,该指针被某个JavaScript库拾取以包装在一个漂亮的JavaScript对象中。 迄今为止很好。

但是如果该对象超出范围并且被垃圾收集,会发生什么。 目前,asm.js代码无法知道这一点,因此结构的内存将保持分配状态,导致内存泄漏。

有什么方法可以在JavaScript中添加终结器到JavaScript对象吗?

这样的终结器可以用来在asm.js中释放内存,从而避免内存泄漏。 到目前为止,我无法找到一个文件即便携式的方式来实现这一目标,但也许我一直在寻找错误的地方。


简单的答案是没有这方面的支持。

由于asm.js代码需要管理自己的内存,因此与存储在asm端的对象交互的所有内容都需要尊重asm使用的内存管理器,而不是浏览器使用的内存管理器。 您可以做的最好的方法是在创建或销毁对其引用的任何对象时显式调用任何引用内部asm内存的对象。

链接地址: http://www.djcxy.com/p/17543.html

上一篇: Finalizers for JavaScript objects

下一篇: How to catch warnings sent during S4 method selection