2016-06-30 16 views
8

Korzystając z Android Memory Monitor, szczególnie z funkcji "Dump Java Heap", obecnie szukam przecieków pamięci w mojej aplikacji. Po lewej stronie widoku zrzutów systemu Android/HPROF znajduje się opcja otwierania "Zadania analizatora" i tam możesz powiedzieć urządzeniu "Wykryj nieszczelne działania" i "Znajdź zduplikowane ciągi". Zastanawia mnie ta druga opcja. Co robi i jak jest użyteczny? To musi być bardziej wyrafinowane niż pomaganie tym niezręcznym programistom wśród nas, którzy umieszczają ten sam napis dwa razy w swoim folderze zasobów. docs nie są tu zbyt pomocne (jeśli moje wyszukiwanie było wystarczająco dokładne), ponieważ tylko stwierdzają, że pomaga to w przypadkach, gdy program docelowy ma ciągi, które powtarzają wartości. Kiedy to się stanie?Dlaczego chciałbym znaleźć "Zduplikowane ciągi" za pomocą programu HPROF Viewer and Analyzer?

Odpowiedz

3

O ile mi wiadomo, po prostu wskazuje na powielone ciągi w pamięci. Jest to jednak przydatne nie tylko w przypadku wyszukiwania przypadków, w których ten sam ciąg został wprowadzony do więcej niż jednego zasobu. Na przykład, jako Strings are immutable w Javie, możesz łatwo skończyć z wieloma innymi instancjami łańcuchów, niż początkowo mogłoby się wydawać. Jeśli twoja aplikacja ma dużo ciągów znaków, ale nie używa StringBuilder, lub jeśli twoja aplikacja przetwarza ciąg tekstowy/tekstowy, dość łatwo może się skończyć niespodziewanie dużą ilością miejsca zajmowanego przez ciągi. Ale odwrotnie, często może to być względnie łatwa optymalizacja, aby uzyskać nieco więcej miejsca (gdy tylko zobaczysz, na czym polega problem). Można więc powiedzieć, że to zadanie polega raczej na "optymalizacji" pamięci, niż na znalezieniu wycieku.

Powiązane problemy