Utilizzando il monitor di memoria Android, in particolare la funzione "Dump Java Heap", attualmente sto cercando perdite di memoria nella mia app. A sinistra della vista dump/HPROF di Android Studio è disponibile un'opzione per aprire "Attività Analyzer" e lì puoi dire alla macchina di "Rilevare attività trapelate" e "Trova stringhe duplicate". Sono perplesso dalla seconda opzione. Che cosa fa e come è utile? Deve essere più sofisticato del semplice aiuto di quei goffi sviluppatori tra noi che hanno messo due volte la stessa stringa nella loro cartella delle risorse. Il docs non è molto utile qui (se la mia ricerca è stata abbastanza approfondita) in quanto affermano solo che aiuta nei casi "in cui il programma di destinazione ha stringhe che ripetono valori". Quando sarebbe questo il caso?Perché dovrei voler trovare "Duplicate Strings" con HPROF Viewer and Analyzer?
risposta
Per quanto ne so, questo indica solo le stringhe duplicate in memoria. Tuttavia, questo è utile per qualcosa di più della semplice ricerca di casi in cui la stessa stringa è stata inserita in più di una risorsa. Ad esempio, come Strings are immutable in Java, è possibile finire facilmente con molte più istanze di stringhe di quanto si potrebbe inizialmente realizzare. Se la tua app ha un sacco di codice di concatenazione delle stringhe ma non usi StringBuilder, o se la tua app esegue qualsiasi elaborazione stringa/testo, è abbastanza facile finire con una quantità inaspettatamente grande di spazio occupata dalle stringhe. Al contrario, spesso può essere una ottimizzazione relativamente facile da ottenere per recuperare un po 'di spazio (una volta che è possibile vedere qual è il problema). Quindi potresti dire che questo compito riguarda più l'ottimizzazione della memoria, piuttosto che trovare una perdita.