javascript - JavaScript 对象的终结器

标签 javascript memory-management finalizer asm.js

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

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

有没有办法从 JavaScript 中向 JavaScript 对象添加终结器?

这样的终结器可用于释放 asm.js 中的内存,从而避免内存泄漏。到目前为止,我找不到一种记录在案的可移植方式来实现这一点,但也许我一直在寻找错误的地方。

最佳答案

简单的回答是不支持这个。

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

关于javascript - JavaScript 对象的终结器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20266610/

相关文章:

javascript - 将 param 转换为 URL 内的 JSON 数据

javascript - element.all(locator).first() vs element(locator) 有警告?

c# - 进程峰值内存使用的类型

c# - 使用Object Initializer的复活区别

javascript - 在 jQuery 中绑定(bind)现有的 JavaScript 函数

javascript - javascript 中的函数 - 定义和调用它们,有或没有函数名

java - Java 中的循环引用

objective-c - Objective-C 分布式对象的内存管理 : my temporary instances live forever!

.net - 我可以防止另一个 AppDomain 中未捕获的异常关闭应用程序吗?

c# - 使用解构函数是错误的吗?