ПЕРФ: Похоже, в frontend-store есть утечка памяти

Похоже, в файле store.js происходит утечка памяти: когда пользователи переключаются между разными темами, _identityMap быстро растет с каждым REST-запросом. Без надлежащей логики очистки карта может исчерпать память при больших кучах JavaScript.

Возможно, достаточно добавить функцию pruneMap в store.js, использующую алгоритм FIFO для удаления самых старых записей?

3 лайка

Можете рассказать об этом подробнее?

Есть ли у вас какие-либо данные, подтверждающие это?

Шаги для воспроизведения следующие: пользователь несколько раз переключается с одной темы на другую, используя раздел «Предложенные/Связанные» под темой, без обновления страницы. В результате размер кучи JavaScript в моем тесте увеличивается с исходных 100 МБ до примерно 500 МБ, если посещено достаточно тем (особенно для тем с большим количеством сообщений). При этом возврат на главную страницу не освобождает эту часть занятой памяти.

Этот размер кучи JavaScript можно увидеть в консоли разработчика браузера (вкладка Performance), а потребление памяти — в диспетчере задач браузера.

В PR прикреплено видео, демонстрирующее проблему (около 3 минут; при использовании той же страницы в течение нескольких часов ситуация будет усугубляться).

Также установка точки останова в этом месте покажет растущее количество элементов в _identityMap.

Однако я не уверен, что _identityMap является корневой причиной этой проблемы, но предоставляю эту информацию для расследования.

2 лайка

Вышеуказанный PR устранит утечку памяти, о которой сообщалось в первом посте. :smiley:

6 лайков

Эта тема была автоматически закрыта через 20 часов. Новые ответы больше не принимаются.