2016-02-27 26 views
17

Qualcuno può dirmi cosa significa in grassetto, blu e rosso in HPROF Viewer in Android Studio significa esattamente?Cosa rappresentano i colori degli elementi dell'albero di riferimento di Android Studio HPROF?

Chiedo informazioni su uno nel pannello Struttura di riferimento.

Bold item

Blue item

Red item

i migliori saluti.

+1

Si potrebbe desiderare di caricare uno screenshot da qualche parte, mostrando a cosa si sta riferendo e collegando a quello screenshot dalla domanda. Sarà difficile per questa domanda aiutare gli altri in futuro senza di essa, e potrebbe anche aiutarti a ottenere risposte alla tua domanda. – CommonsWare

+0

@CommonsWare Ho aggiunto degli screenshot. –

risposta

13

non riesco a trovare alcuna documentazione su questo, ma da guardare attraverso un paio di heap dump questo è quello che sembrano essere:

  • blue - Il più vicino dominator dell'istanza selezionata nel riquadro in alto a destra.
  • bold - Una radice GC, ad esempio un'istanza con profondità 0 che dovrebbe essere non essere raccolti. This answer ha ulteriori informazioni su cosa sia una radice GC e this answer elenca i tipi di elementi che sono root.
  • red - In realtà non li ho visti, ma suppongo che indichi un'istanza che dovrebbe essere raccolta dati inutili, ma non è ancora stata eseguita.

Anche in questo caso, un disclaimer qui è che questo potrebbe essere tutto sbagliato e non riesco a trovare alcuna informazione ufficiale su questo, ma sembra corrispondere con le mie osservazioni quando si utilizza il profiler heap.

3
  • this$0 (quello rosso) - è la variabile che contiene il riferimento LeakActivity. Nel tuo caso questo è un riferimento implicito alla classe che li include. Questa è una natura di classi interne anonime in Java - implicitamente contengono un riferimento alla classe esterna (che racchiude).

  • nome classe blu - è solo una posizione della variabile this$0.

Quindi, in sostanza ciò che state vedendo - è LeakActivity è implicitamente riferimento da LeakAsyncTask che viene implementato come classe interna anonima all'interno LeakActivity, quindi LeakActivity non può essere garbage collection fino LeakAsyncTask è finito. In modo da avere una perdita potenziale di attività, che è veramente pericolosa per la vostra applicazione

+0

Intendo quello rosso come nell'ultima schermata. Ho pensato che quello rosso fosse oggetti che non sono più riferimenti ma ci sono ancora in memoria (sarà presto GCed). Ma volevo essere sicuro e volevo anche sapere cosa significa audace e blu. Poiché alcuni degli elementi (questo è il modo in cui vengono spiegati gli elementi blu) indicano la posizione e sono neri, quindi non penso che il colore blu sia la sede di riferimento. –

+0

ah, vedo ... Non sono sicuro, onestamente cosa significano. Ho bisogno di giocare un po 'con i campioni .. Tornerò qui una volta che avrò più informazioni :) –

+0

OK, grazie :) Non vedo l'ora di ricevere una risposta. –