【发布时间】:2018-10-21 10:02:59
【问题描述】:
我正在使用动态导入来加载用户在浏览器中编写的脚本。我首先将脚本内容放入 blob,然后使用动态 import() 将脚本作为模块加载。随着时间的推移,我希望这些脚本会改变并被销毁,因此相应的模块会被垃圾收集。但是,根据 Chrome 中的内存分析,这并没有发生。
原因似乎与名为ModuleMap 的东西有关。这是我在所有脚本不再使用后拍摄的内存快照的屏幕截图。
如您所见,Window 对象提供了通向这些模块的保留路径。只要是这样,我肯定最终会耗尽内存,因为每次用户编辑他们的脚本时都会创建这些模块。
我想知道是否有办法让 Chrome(和其他浏览器)在这些模块不再使用时卸载它们。
【问题讨论】:
标签: javascript ecmascript-6 es6-modules dynamic-import