Ottimizzazione di una visualizzazione client-server che esaurisce la memoria

0

Ho una visualizzazione (basata sullo shader) che sto utilizzando in un browser Chrome. Recentemente ho esaurito la memoria dopo aver periodicamente aggiornato il pool di dati dal server, o se la visualizzazione è troppo grande (richiedo troppi dati?), Il JSON passato dal back-end termina in modo imprevisto. Devo rendere il programma più efficiente per evitare questi arresti anomali.

Ecco la sua forma:

  • La visualizzazione è una griglia di forme modellate.
  • Le forme sono costruite in base agli oggetti dati passati dal back-end
  • Le immagini nella griglia vengono periodicamente aggiornate: viaggiano attraverso lo schermo e mentre le vecchie colonne della griglia scorrono nuove colonne con nuove forme scorrono su
  • Ho un gruppo permanente di nuovi dati che attingo dal front-end per aggiungere queste nuove forme.
  • Quando la piscina è quasi esaurita, chiedo un nuovo, fresco gruppo di persone dal back-end.

Solitamente quando si richiede un nuovo pool di dati (JSON) che Chrome visualizza l'avviso "Aw Snap! Google Chrome ran out of memory... . L'altra volta ciò accade quando richiedo le informazioni per troppe nuove forme dal back-end; in tal caso, il JSON finisce inaspettatamente.

Data questa panoramica, dove dovrei iniziare a migliorare l'efficienza?

Quanto è grande il JSON?

Quello che posso passare senza che finisca prematuramente, ma non posso aggiornare perché la memoria è esaurita è 207,512848 MB quando lo eseguo tramite sys.getsizeof() di Python.

Che cosa usi per passare i dati dal server al client?

Sul front end utilizzo un XMLHttpRequest () con i risultati racchiusi in una Promessa. Per connettere il back-end Python al front-end Javascript sto usando Flask .

Aggiornamento sull'utilizzo della memoria:

Stavo monitorando l'utilizzo della memoria utilizzando il Task Manager di Chrome e ho notato che mentre l'utilizzo live di Javascript si aggirava intorno a 511.000 k, il valore nella colonna della memoria aumentava costantemente a 2 GB nel corso di circa 10 minuti man mano che i pool di dati venivano aggiornati loro stessi più volte. Si tratta di un problema di perdita o di garbage collection?

Aggiornamento in caso di perdita del contesto

Ho finito per entrare e aumentare manualmente la cache di memoria assegnata a Chrome e aumentare la memoria virtuale sulla macchina. Poiché questa visualizzazione sarà specifica del sito e non un'app per qualsiasi macchina, questo approccio dovrebbe andare bene. Tuttavia, WebGL ora perde il contesto dopo che ho eseguito il programma e fatto clic su alcune forme. A giudicare da questa domanda SO , penso che stia perdendo il contesto perché dopo un po 'la CPU impiega troppo tempo a rispondere. Non sei sicuro di cosa c'è qui.

    
posta gromiczek 06.12.2016 - 21:13
fonte

0 risposte

Leggi altre domande sui tag