我正在使用动态导入来加载用户在浏览器中编写的脚本。我首先将脚本内容放入一个 blob 中,然后使用 dynamicimport()
将脚本作为模块加载。随着时间的推移,我希望这些脚本会改变并被销毁,因此相应的模块会被垃圾收集。但是,基于 Chrome 中的内存分析,这并没有发生。
原因似乎与一个叫做ModuleMap
. 这是我在所有脚本不再使用后拍摄的内存快照的屏幕截图。
如您所见,Window 对象提供了通往这些模块的保留路径。只要是这种情况,我肯定最终会耗尽内存,因为每次用户编辑他们的脚本时都会创建这些模块。
我想知道是否有办法让 Chrome(和其他浏览器)在这些模块不再使用时卸载它们。