PERF: Parece haver um vazamento de memória no frontend-store

Parece haver um vazamento de memória no arquivo store.js, pois quando os usuários navegam por diferentes tópicos, o _identityMap parece crescer rapidamente a cada solicitação RESTful. Sem uma lógica de limpeza adequada, o mapa esgotará a memória com grandes heaps de JS.

Talvez adicionar uma função pruneMap ao store.js, com algoritmo FIFO para remover os mapas mais antigos, seja suficiente?

Além disso, a variável const MAX_ITEMS_PER_TYPE = 500; pode ser discutida para estabelecer um equilíbrio entre cache e armazenamento de memória.

3 curtidas

Você pode nos dizer mais sobre isso?

Você tem algum dado para comprovar isso?

Os passos para reproduzir são os seguintes: o usuário pula de um tópico para outro usando o “sugerido/relacionado” sob o tópico várias vezes sem atualizar a página, e o tamanho do heap de js se acumulará dos 100MB originais para cerca de 500MB no meu teste, se os tópicos visitados forem suficientes (especialmente para tópicos com muitas postagens). E retornar à página inicial não liberará essa parte da memória ocupada.

Este tamanho de heap de js pode ser visto no console-desempenho do navegador, e o consumo de memória pode ser visto no gerenciador de processos do navegador.

Eu anexei um vídeo disso no PR, apenas mostrando o problema (cerca de 3 minutos, quando se usa a mesma página por mais horas, a situação piorará)

E também adicionar um ponto de interrupção aqui mostrará a quantidade crescente de itens em _identityMap

Mas não tenho certeza se é o _identityMap que causou esse problema, apenas fornecendo algumas informações para investigação.

2 curtidas

O PR acima abordará o vazamento de memória relatado no OP. :smiley:

6 curtidas