使用loadMicroApp方式加载子应用,关闭子应用未能彻底销毁。 #2187
Zuojiangtao
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
在使用loadMicroApp方式加载子应用时采用多页签方式展示,关闭页签时调用unmount()仅仅把子应用的DOM树置空,qiankun本身维护子应用的相关缓存未被销毁,导致多次频繁打开关闭子应用时内存泄漏。
相关issues: #1715 #1858 #2166
之前看到 #715 中,在对于sandbox实例处理时,作者说到
unmount 的时候不能销毁,因为应用可能会 remount,remount 的时候是不需要再完整执行一遍应用的 js 逻辑的,可能直接从上次退出的上下文中恢复(没销毁的 sandbox 并不属于内存泄露,因为 remount 时这个 sandbox 会被复用)。
如果真的出现因为微应用过多导致了严重的内存挤占的问题,届时可以提供一个 LRU 池,对需要移除的微应用做 destroy 处理,不过这个就是另一个 feature 了。
感觉可以出个属性来控制是否复用子应用,复用就仍旧不销毁sandbox实例,不复用就彻底销毁。
Beta Was this translation helpful? Give feedback.
All reactions