首页 > 解决方案 > Angular 使用大量分离节点泄漏内存(使用 entryComponents)

问题描述

我有一个简单的应用程序,它使用entryComponentswithComponentFactoryResolver.resolveComponentFactory以非常高的速率根据数据注入组件。我使用viewContainerRef.clear();并且每个注入的组件都有一个 OnDestroy 方法。据我所知,我的代码没有泄漏任何东西(销毁时取消订阅每个可观察的)但是为什么 Angular 将所有这些分离的节点保留在内存中?

我使用了很多 ngIf、ngFor、ngClass 等。我认为垃圾收集器应该把这些未使用的节点扔掉。但他没有。

有谁知道我应该寻找什么?还是我的基本假设是错误的,即 clear 应该解决这个问题?如果是这样,我该如何手动调用 OnDestroy 并删除组件?

Chrome的内存快照分析

标签: javascriptangularmemory-leaksangular2-template

解决方案


推荐阅读