Должны ли компоненты быть освобождены из памяти при изменении маршрутов? - PullRequest
2 голосов
/ 03 ноября 2019

Я создал угловое приложение, и, похоже, очень большая утечка памяти происходит из-за того, что компоненты компонентов не освобождаются из памяти.

В приложении есть домашний компонент, к которому вы переходите после входа в систему. Из домашнего компонента пользователь может перейти к компоненту формы просмотра, который создает большой объем памяти.

Основная проблема, с которой я столкнулся, заключается в том, что каждый раз, когда я перемещаюсь от компонента формы просмотра обратно к домашнему компоненту, компонент формы представления никогда не освобождается из памяти. Похоже, что домашний компонент также не выпущен, если я перемещаюсь назад и вперед между домашним компонентом и компонентом просмотра формы 4 раза, то я вижу 4 каждого компонента в моем снимке кучи (взятом с помощью инструментов Chrome dev).

Компонент формы представления имеет множество других вложенных компонентов, а также использует очень большую очень глубоко вложенную угловую FormGroup.

Я использую глобальную прокладку для окна в своих приложениях pollyfills.js.

Мои компоненты используют множество Observables и BehaviorSubjects (rxjs 6.3.3), я использую метод помещения всех моих подписок в массив и отмены подписки onDestroy.

Я сделал и поцарапалangular project, и я имитировал маршрутизацию, выполненную в реальном приложении, и увидел, что компоненты были удалены из снимка кучи, как и ожидалось.

...