У меня есть простое приложение, которое использует entryComponents
с ComponentFactoryResolver.resolveComponentFactory
для ввода компонентов в зависимости от данных с очень высокой скоростью. Я использую viewContainerRef.clear();
, и у каждого внедренного компонента есть метод OnDestroy. Насколько я знаю, мой код ничего не пропускает (отказываясь от подписки на все наблюдаемые при уничтожении), но почему Angular сохраняет все эти отдельные узлы в памяти?
Я использую много ngIf, ngFor, ngClass и т. Д. Я думаю, что сборщик мусора должен просто выбросить эти неиспользуемые узлы. Но он не делает.
Кто-нибудь знает, что я должен искать? Или мое основное предположение неверно, что об этом должен заботиться ясный человек? Если да, то как мне вручную вызвать OnDestroy и удалить компонент?
![Chrome's memory snapshot analysis](https://i.stack.imgur.com/X68nd.png)