Sembra esserci una perdita di memoria nel file store.js, quando gli utenti navigano tra diversi argomenti, l’_identityMap sembra crescere rapidamente ad ogni richiesta RESTful. Senza una logica di pulizia adeguata, la mappa esaurirà la memoria con heap JavaScript di grandi dimensioni.
Forse aggiungere una funzione pruneMap a store.js, con algoritmo FIFO per rimuovere le mappe più vecchie, sarà sufficiente?
Inoltre, la variabile const MAX_ITEMS_PER_TYPE = 500; può essere ulteriormente discussa per stabilire un equilibrio tra cache e archiviazione in memoria.
I passaggi per la riproduzione sono i seguenti: l’utente salta da un argomento all’altro utilizzando i “suggeriti/correlati” sotto l’argomento più volte senza aggiornare la pagina, e la dimensione dell’heap js si accumulerà dagli originali 100MB a circa 500MB nel mio test, se gli argomenti visitati sono sufficienti (specialmente per argomenti con molti post sotto di essi). E tornare alla homepage non rilascerà quella parte di memoria occupata.
Questa dimensione dell’heap js può essere vista dalla console-performance del browser, e il consumo di memoria può essere visto dal gestore dei processi del browser.
Ho allegato un video di questo nella PR, mostra solo il problema (circa 3 minuti, quando si utilizza la stessa pagina per più ore, la situazione peggiorerà)
Inoltre, l’aggiunta di un punto di interruzione qui mostrerà la quantità crescente di elementi in _identityMap