Sfondo: Attualmente sto lavorando su un sito intranet che fa uso della libreria MochaUI (lavoro dalla virtual desktop demo). Sto usando Mootools 1.2.4 e MochaUI 0.9.7. Le finestre che vengono aperte nella mia implementazione "desktop virtuale" caricano il loro contenuto tramite iframe. Alcune delle pagine caricate sono piuttosto pesanti in termini di css e scripting, quindi è importante che gli oggetti Window siano adeguatamente raccolti quando l'utente chiude una finestra. Questo è apparentemente curato dalla biblioteca (fa un buon lavoro quando si utilizza Firefox).Chrome non riesce a liberare la memoria, raccolta dei rifiuti non si verifica come previsto (biblioteca Mootools/MochaUI)
Aggiornamento La domanda originariamente inviata era diventata troppo lunga per le successive modifiche/aggiornamenti. Il titolo non era più preciso, quindi ho cambiato anche quello. Inoltre, vedi la mia risposta qui sotto per una soluzione parziale.
Ecco i punti essenziali:
Chrome goofs up in questo modo:
- Chrome non riesce a liberare la memoria allocata per oggetti finestra MochaUI quando sono chiusi. Invece, l'utilizzo della memoria di Chrome si blocca (letteralmente) al livello raggiunto dopo che la finestra ha completato il caricamento del suo contenuto iframe, impostando un limite inferiore sull'utilizzo della memoria fino a quando la pagina non viene aggiornata.
- La memoria utilizzata dal processo continua ad aumentare con le successive aperture/chiusure delle finestre. Alla fine, viene raggiunto un certo tipo di cap, e l'utilizzo della memoria smette di arrampicarsi come ripida/inizia a oscillare invece di saltare drasticamente.
- Questo problema è più evidente quando le finestre in questione caricano contenuti iframe abbastanza pesanti (in termini di memoria). La finestra che sto usando per tutti gli scopi di test carica una pagina di 580 kb (senza cache) nel suo iframe.
Stranamente, la raccolta dei rifiuti previsto fa avvenire, quando
- il browser viene successivamente minimizzato
- un'altra scheda si apre nella stessa finestra del browser
- un La cronologia della memoria viene registrata in Strumenti per sviluppatori. (opzione comedy)
- Questo comportamento suggerisce qualche possibile approccio alla soluzione n. 1?
domanda molto interessante e buona spiegazione. Non sono esattamente sicuro di quale sia il colpevole, anche se ti avvertirò che c'è una possibilità che non ci sarà una soluzione. O se ce n'è uno, non è facile. Google ha un approccio molto pigro alla programmazione. Anche se Chrome sembra caricare più velocemente e consumare meno memoria di tutti i principali browser, è pieno di bug che non avrei mai immaginato in Firefox o Opera. Lo stesso con Android contro iOS. – stevendesu
Ho pubblicato una versione molto dettagliata/lunga di questa domanda nel forum di assistenza per Chrome Webmaster di Google e non ho ricevuto risposta, quindi questa volta ho deciso di renderlo più concreto! Sono d'accordo che questo sembra un bug (o un capriccio di come Chrome determina quali oggetti devono essere raccolti da garbage). È come se ci fosse un livello più pesante di garbage collection che si verifica quando Chrome è ridotto a icona e gli oggetti della mia finestra non sono completamente inutili secondo gli standard di Chrome, forse. Grazie per il commento! – freenatec
@steven_desu: Google non solo ha adottato un approccio pigro alla programmazione, ma sembra anche estremamente apatico nei confronti di qualsiasi tipo di lamentele o problemi che i suoi utenti hanno riscontrato. –