Il semble y avoir une fuite de mémoire dans le fichier store.js, lorsque les utilisateurs parcourent différents sujets, _identityMap semble croître rapidement à chaque requête RESTful. Sans une logique de nettoyage appropriée, la carte épuisera la mémoire avec de grands tas JS.
Peut-être qu’ajouter une fonction pruneMap à store.js, avec un algorithme FIFO pour supprimer les cartes les plus anciennes, suffira ?
De plus, la variable const MAX_ITEMS_PER_TYPE = 500; peut être discutée davantage pour établir un équilibre entre le cache et le stockage en mémoire.
Les étapes de reproduction sont les suivantes : l’utilisateur passe d’un sujet à un autre en utilisant les « suggérés/liés » sous le sujet plusieurs fois sans rafraîchir la page, et la taille du tas JS s’accumulera du 100 Mo d’origine à environ 500 Mo lors de mon test, si les sujets visités sont suffisants (surtout pour les sujets avec beaucoup de publications en dessous). Et revenir à la page d’accueil ne libérera pas cette partie de la mémoire occupée.
Cette taille de tas JS peut être vue dans la console du navigateur - performance, et la consommation de mémoire peut être vue dans le gestionnaire de processus du navigateur.
J’ai joint une vidéo de ceci dans la PR, montrant simplement le problème (environ 3 minutes, lorsque la même page est utilisée pendant plusieurs heures, la situation s’aggravera)
Et j’ajoute également un point d’arrêt ici pour montrer la quantité croissante d’éléments dans _identityMap