【问题标题】:WebAssembly dynamic module unloadingWebAssembly 动态模块卸载
【发布时间】:2019-05-07 20:14:35
【问题描述】:

我知道可以在 WebAssembly 中动态加载模块。是否可以动态卸载模块? 我正在考虑将实验性移植到具有支持卸载的动态加载器/链接器的系统的 Wasm 中。但是在 Wasm 中找不到有关卸载模块的信息。

【问题讨论】:

    标签: webassembly


    【解决方案1】:

    无需卸载 Wasm 模块,因为如果不再使用它们会自动进行垃圾收集。这类似于 JS 代码的处理方式。

    【讨论】:

    • Andreas,感谢您的回答,它帮助我了解如何澄清我的问题。我正在考虑的系统有它自己的编译器和动态链接器/加载器。如果将其移植到 Wasm,我将需要 A) 加载初始“内核”模块(这是通过 JS 完成的)
    • 你的 B) 是什么? :)
    • 分心了) B) 动态地将模块添加到已经加载的模块集(据我所知,这是可能的,通过 dlopen) C) 从加载的模块集中动态删除(卸载)一个模块.其他模块将保持加载并继续工作。稍后,卸载模块的(可能不同)版本可以再次加载(即编译此模块的较新版本)我想我所描述的是 WASM 中的开发环境
    • 当然,但是“卸载”只有在您删除了对模块及其导出的所有引用后才有意义。到那时,它已经由引擎自动完成了。
    • 安德烈亚斯,感谢您提供的宝贵信息!您能否指出详细描述它的位置,例如在文档或 smth 中?模块垃圾收集的整个想法。另外,有没有办法“踢” GC - 显式调用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2011-03-07
    • 2010-11-23
    • 2011-05-16
    相关资源
    最近更新 更多