umijs / qiankun

📦 🚀 Blazing fast, simple and complete solution for micro frontends.
https://qiankun.umijs.org
MIT License
15.87k stars 2.02k forks source link

[Bug] Angular作为子应用时,多次切换导致内存泄漏 #1461

Open hairgc opened 3 years ago

hairgc commented 3 years ago

What happens?

前提

  1. qiankun版本:2.4.1
  2. 子应用为Angular+ng-zorro

    现象

    反复进入angular子应用,内存持续增加,没有被回收,大致定位了下是因为app.component组件引入了ng-zorro的样式文件,注释掉则不会出现此问题,希望官方给一个解决方案

录屏

最小可复现仓库

https://github.com/mahuiplus/qiankun

复现步骤,错误日志以及相关配置

  1. 根据官方demo稍微改了一下,angular9版本引入ng-zorro,直接按照官方demo即可启动
  2. 所有应用启动, angular9子应用与其他子应用反复切换,即可复现

相关环境信息

kuitos commented 3 years ago

样式文件的引用被组件一直持有了 unmount 时没有销毁吧? 这种情况的话就需要应用或者组件 unmount 的时候做好相应处理了,qiankun 没办法处理这种组件自己导致的内存泄露问题。

hairgc commented 3 years ago

样式文件的引用被组件一直持有了 unmount 时没有销毁吧? 这种情况的话就需要应用或者组件 unmount 的时候做好相应处理了,qiankun 没办法处理这种组件自己导致的内存泄露问题。

换了种方式继续测试,删除组件样式文件中引用的样式,转而在组件本身的样式文件中写足够多的样式(大概8000行,方便看效果),依然有内存泄漏问题,这种写法本身应该没什么问题呀

app.component.less

//@import "../styles";
//@import "~ng-zorro-antd/ng-zorro-antd.less";

//@primary-color: #ed312f;
.card-container{
  background-color: red;
}
// 后面大概还有8000行

录屏

hairgc commented 3 years ago

没有下文了吗

jiangyh1024 commented 2 years ago

@hairgc 有解决方案了吗? qiankun加载子应用然后再卸载,感觉内存没有被释放,越来越大