Ci sono 4 posti in cui un browser può perdere memoria:
La pagina web
Nei browser moderni questo è pienamente a carico dello sviluppatore web. Gli ambienti raccolti dalla raccolta dei rifiuti non raccolgono la memoria a cui si fa ancora riferimento, e ci sono molti modi per mantenere la memoria di riferimento senza senso (ad esempio creare una chiusura da collegare come gestore di eventi e includere accidentalmente un gruppo di variabili in quella ambito di chiusura). Uno sviluppatore web può risolvere queste perdite completamente gestendo correttamente i riferimenti variabili nel loro codice. In genere un ricaricamento della pagina libera la memoria.
Componenti aggiuntivi
Se i componenti aggiuntivi sono scritti anche in un linguaggio raccolto con garbage (come javascript), allora soffrono dello stesso problema. Tuttavia, un ricaricamento della pagina di solito non libera questa memoria, quindi sembra che il browser stia perdendo memoria mentre in realtà è colpa dello sviluppatore aggiuntivo. Per quanto ne so, questa è la causa principale delle fughe di browser (ecco perché la raccomandazione predefinita è di verificare se la perdita si verifica senza componenti aggiuntivi).
Motore del browser
Tutti i motori di browser moderni sono scritti in C ++. Il C ++ non è sottoposto a garbage collection, ma utilizza invece allocazione di memoria esplicita. Se gli sviluppatori assegnano la memoria e poi dimenticano di deallocarla, il motore perde memoria. Per quanto ne so, tutti i produttori di browser eseguono numerosi test e revisione del codice per trovare e risolvere questo tipo di perdite. Non è fisso al 100% e non lo sarà mai, ma non è più un problema enorme.
Non perdite
Infine ci sono una serie di funzionalità di memorizzazione nella cache che significano che il processo del browser crescerà nell'ambito durante l'utilizzo. Queste non sono perdite, sono intese per utilizzare in modo ottimale la RAM disponibile. In genere l'ingombro della memoria cresce al massimo e poi si ferma lì.