2014-09-14 19 views
6

Przeglądałem wykorzystanie pamięci dla utworzonej przeze mnie aplikacji Xamarin na Androida, która wyglądała dość wysoko w porównaniu do innych uruchomionych natywnych aplikacji na Androida na różnych urządzeniach (około 70 MB po uruchomieniu przez jakiś czas) . Zacząłem śledztwo w tej sprawie, początkowo porównując wykorzystanie pamięci mojej aplikacji z innymi aplikacjami androidowymi Xamarin. Przyjrzałem się przykładowym aplikacjom, takim jak "Pracownicy" (dostępne na stronie głównej studia xamarin lub stronie xamarin).Wykorzystanie pamięci aplikacji Xamarin dla systemu Android

Zauważyłem, że po uruchomieniu tej aplikacji (i mojej aplikacji) od razu używają około 25-30 MB pamięci RAM, to dzieje się nawet wtedy, gdy nie ładuję layoutu w głównej akcji uruchamiania. Czy to jest oczekiwane? Wydaje się to dość wysokie, ponieważ wiele innych aplikacji działających na urządzeniach z Androidem może osiągnąć ten poziom tylko przez kilka dni? Jeśli tak, to będę musiał zrobić wszystko, co w mojej mocy, aby reszta aplikacji była jak najbardziej efektywna, ale chciałem wyjaśnić, czy ta obserwacja została dokonana przez innych?

W międzyczasie przyglądam się sugestii witryny dla programistów Androida poświęconej minimalizowaniu zużycia pamięci (czas życia i hierarchia układu itp.), Aby zrobić wszystko, co w mojej mocy, aby zmniejszyć zużycie pozostałej pamięci.

Po użyciu niektórych standardowych narzędzi (MAT jest głównym punktem początkowym), z trudem ustaliłem, co dokładnie zużywa tę pamięć.

Moje pytania brzmią: czy jest to typowa ilość pamięci, którą może zużywać aplikacja Xamarin dla systemu Android, gdy ładowana jest pierwsza aktywność (nawet przed załadowaniem układów) i jakie są najlepsze narzędzia zgodne z Xamarin do określania ilości pamięci każdy proces jest używany.

+0

Używasz Xamarin Insights? http://stackoverflow.com/a/31423043/2851619 – baraka

+0

jakiekolwiek ulepszenie w tej sprawie? Czy znalazłeś odpowiedź? –

Odpowiedz

3

Ten wątek na liście dyskusyjnej może być interesujący: http://mono-for-android.1047100.n5.nabble.com/RAM-Usage-of-applications-written-with-monodroid-td5711289.html (pochodzi z 2012 roku, więc od tego czasu prawdopodobnie nastąpiła poprawa).

Niektóre z kluczowych punktów:

Jestem zainteresowany wykorzystaniem RAM zastosowań. Napisaliśmy aplikację z monodroidem, która wykorzystuje rozszerzoną rzeczywistość, a jej użycie zwykle wynosi 50MB-60MB.

Należy pamiętać, że numery adb shell ps są mylące [...]. Aby określić wielkość sterty Mono GC, należy użyć GC.GetTotalMemory()

Można też chcą przyjrzeć Memory and Performance Best Practices i Garbage Collection artykuły w Dokumentach Xamarin użytkownika.

+0

Dzięki za twój wpis. Wątek listy dyskusyjnej był przedmiotem zainteresowania, chociaż niestety post z jonp na Xamarin zdawał się potwierdzać, że rozmiar ten był "standardowy" nawet dla aplikacji Hello World, mimo że jego badania nie potwierdziły dokładnie, co używało tej pamięci. –