Похоже, в файле store.js происходит утечка памяти: когда пользователи переключаются между разными темами, _identityMap быстро растет с каждым REST-запросом. Без надлежащей логики очистки карта может исчерпать память при больших кучах JavaScript.
Возможно, достаточно добавить функцию pruneMap в store.js, использующую алгоритм FIFO для удаления самых старых записей?
Шаги для воспроизведения следующие: пользователь несколько раз переключается с одной темы на другую, используя раздел «Предложенные/Связанные» под темой, без обновления страницы. В результате размер кучи JavaScript в моем тесте увеличивается с исходных 100 МБ до примерно 500 МБ, если посещено достаточно тем (особенно для тем с большим количеством сообщений). При этом возврат на главную страницу не освобождает эту часть занятой памяти.
Этот размер кучи JavaScript можно увидеть в консоли разработчика браузера (вкладка Performance), а потребление памяти — в диспетчере задач браузера.
В PR прикреплено видео, демонстрирующее проблему (около 3 минут; при использовании той же страницы в течение нескольких часов ситуация будет усугубляться).
Также установка точки останова в этом месте покажет растущее количество элементов в _identityMap.