Vai al contenuto

Trova memory leak

Ripeti la navigazione e individua gli oggetti trattenuti in memoria dopo il ritorno alla pagina iniziale. Esamina l’accumulo osservato nel browser.

Frammento del report

Scopri quale gruppo cresce tra le iterazioni

Esempio illustrativo di navigazione e ritorno. I valori spiegano il rapporto e non sono risultati del tuo sito.

Cambio di route

/catalog → /product → /catalog × 5

La navigazione è terminata, ma gli oggetti di stato della pagina precedente restano in memoria. Il loro numero cresce a ogni ripetizione. Verifica quali riferimenti li trattengono.

Oggetti route view model
Prima → dopo
846 → 1451
Delta
+605
Delta / iterazione
+121
Set<observerTarget>
Prima → dopo
34 → 74
Delta
+40
Delta / iterazione
+8
memoria nativa
Prima → dopo
41.2 → 54.7 MB
Delta
+13.5 MB
Delta / iterazione
+2.7 MB

Dati illustrativi per spiegare il rapporto. I risultati della pagina appaiono dopo la scansione.

Come funziona

Ripetiamo uno scenario e contiamo il delta tra le passate

Scenario

Scegliamo i link della pagina

Lo scanner trova fino a tre link interni visibili. Ripete cinque volte ogni navigazione e il ritorno alla pagina di partenza.

Delta

Confrontiamo l’uso della memoria

Dopo un passaggio di riscaldamento, misuriamo la memoria trattenuta dopo navigazioni ripetute. Così emerge un accumulo non visibile al primo caricamento.

Gruppi di crescita

Mostriamo cosa si accumula

Il rapporto elenca collezioni, listener di eventi, nodi DOM e tipi di oggetti in crescita. Per le collezioni mostra anche i punti di modifica nel codice, quando disponibili.

Moduli di analisi

Cosa include il report sui memory leak

Scenario

Scenario verificato

Il report memorizza l'URL, il percorso utente verificato, il numero di iterazioni e il flag di leak, così il risultato può essere riprodotto.

perdita di memoriaURLiterazioni
Delta

Crescita totale della memoria

Confronta la crescita totale e quella per iterazione per la stessa navigazione. L’accumulo è un motivo per esaminare gli oggetti trattenuti; anche cache intenzionali e stato dell’applicazione possono mantenere memoria in uso.

delta totaleper iterazionestatistiche memoria
Collezioni

Array, Map, Set, Object

Le collezioni in crescita sono elencate separatamente: dimensione prima e dopo, delta, delta per iterazione e stack trace dove la collezione è cambiata.

MapObjectstacktrace
Listener

Event listener e nodi

Il report mostra i conteggi dei listener prima e dopo lo scenario, il delta risultante e i nodi listener che perdono dove le sottoscrizioni crescono.

prima / dopodelta nodiper iter
DOM

Crescita dei nodi DOM

Il report mostra la crescita dei nodi DOM e le descrizioni dei nodi che perdono, rendendo più facile trovare DOM distaccato o inizializzazione ripetuta dell'interfaccia.

conteggio nodidescriptionscollegati
Oggetti heap

Tipi di oggetti heap

Per i tipi di oggetti in crescita, il report include delta di conteggio, delta di dimensione, delta di dimensione trattenuta e valori per iterazione. Quando esistono dati ambientali, heap totale, nativo e V8 sono mostrati separatamente.

delta conteggiodelta dimensionetrattenuti
FAQ

Domande frequenti sui memory leak

Risposte brevi sul delta per iterazione, collezioni in crescita, listener, nodi DOM e cosa fare dopo il report.

Ogni aumento di memoria è una perdita?
No. Un’applicazione può conservare dati ancora necessari. Lo scanner cerca accumuli durante navigazioni ripetute, ma non conosce le esigenze dell’applicazione. Verifica cosa trattiene gli oggetti e se dovrebbero essere liberati al ritorno.
Cosa sono i nodi DOM staccati?
Sono elementi rimossi dal documento ma trattenuti in memoria da riferimenti JavaScript. Per esempio, può restare un riferimento a un dialogo chiuso. Le descrizioni dei nodi restringono la ricerca; verifica nel codice il riferimento che li trattiene.
Il controllo può trovare leak di listener di eventi?
Sì. Il report mostra i conteggi dei listener prima e dopo, il delta totale, il delta per iterazione e i nodi listener che causano leak con il delta del conteggio nodi. Questo aiuta a distinguere una sottoscrizione una tantum dagli handler aggiunti a ogni ripetizione.
Quali pagine e azioni controlla lo scanner?
Il controllo è pensato per SPA con navigazione senza ricaricamento completo. Lo scanner sceglie fino a tre link interni visibili e ripete andata e ritorno. Moduli, ricerche e apertura di dialoghi non vengono controllati separatamente. Senza link adatti il controllo fallisce; questo non significa che non ci siano perdite.
Cosa devo fare dopo aver trovato un leak?
Ripeti la navigazione indicata nel report. Se il numero di listener aumenta a ogni ritorno, individua dove il componente li aggiunge e verifica se viene eseguita la pulizia. Esamina i riferimenti che trattengono gli oggetti anziché affidarti solo al flag leak. Dopo la correzione, confronta lo stesso percorso e lo stesso numero di iterazioni.
Cookie

Utilizziamo i cookie

Utilizziamo i cookie per offrirti un'esperienza migliore sul nostro sito. Puoi saperne di più su come utilizziamo i cookie nella nostra informativa sulla privacy.