2014-04-03 14 views
9

Sto sviluppando una chat su nodejs. Come ogni chat, gli utenti inviano i link tutto il tempo. La situazione si verifica ogni volta che un utente fa clic su qualsiasi link (tag di ancoraggio con target "_blank"), Chrome apre una nuova scheda (Esempio: un video di youtube) che sembra collegare entrambe le schede, principale e nuova, in memoria in questo modo:La nuova scheda di Chrome contiene memoria

http://s22.postimg.org/a9u5sm9dt/Chat_Tabs.png

sembra un comportamento normale, ma quando l'utente vicino che nuova scheda, scheda principale può contenere memoria dalla scheda più recente, riducendo a pochi Ks.

http://s22.postimg.org/e7m0vrlkx/Chat_Tabs_User_Close.png

Garbage Collector non funziona sempre e supponendo che un utente aperte 30 collegamenti, memoria possono crescere in modo significativo.

Qualcuno sa come creare un tag di ancoraggio che può evitare questo comportamento? Si tratta di un problema di Chrome? La mia versione è 33.0

Un comportamento interessante è quando l'utente fa clic con il pulsante destro del mouse e apre una nuova scheda dal menu. Chrome crea una nuova scheda separatamente. Questo è il comportamento che voglio replicare.

Cheers!

+2

Non c'è nulla che tu possa fare, per quanto riguarda il codice lato server o client, per manipolare o influenzare la garbage collection o l'uso della memoria del programma utente. –

+0

Grazie! Sì, lo so, ma un comportamento interessante è quando l'utente fa un clic destro e apre una nuova scheda da esso. Chrome crea una nuova scheda separatamente e questo è ciò che voglio replicare. – Machinerium

+0

Apparentemente si tratta di una frustrazione nota e sembra che ogni browser abbia problemi qui o là con esso: https://www.google.com/search?q=chrome+memory+leak – DrLivingston

risposta

5

Ho trovato una soluzione a questo, impostando rel = noreferrer al tag di ancoraggio. Ora apre qualsiasi numero di schede separatamente senza sovraccaricare la memoria sulla scheda principale.

Problemi correlati