Przygotowywanie aplikacji do obsługi większych limitów pamięci
Czas czytania: 2 minuty
Świetne wrażenia użytkownika są kluczowe dla misji Androida, a aby spełnić tę obietnicę, musimy dbać o to, by urządzenia działały szybko, sprawnie i niezawodnie. Dlatego optymalizacja pamięci jest teraz ważniejsza niż kiedykolwiek. W całym ekosystemie nowe urządzenia utrzymują lub nawet zmniejszają pojemność pamięci fizycznej w odpowiedzi na wzrost cen pamięci, ale użytkownicy nadal oczekują tej samej płynności i wysokiej wydajności aplikacji.
W Androidzie 17 wprowadziliśmy limity pamięci dla poszczególnych aplikacji, począwszy od urządzeń Pixel, aby chronić ogólne wrażenia użytkowników przed aplikacjami, które zużywają nadmierną ilość pamięci i powodują spowolnienie działania całego systemu. W ciągu najbliższego roku coraz więcej producentów będzie wykorzystywać limity pamięci Androida dla poszczególnych aplikacji w swojej ofercie urządzeń o różnych konfiguracjach pamięci RAM – od 4 GB do ponad 16 GB. Jeśli Twoja aplikacja przekroczy te limity, jej działanie zostanie spowolnione, a może nawet zostać zakończone. Optymalizacja wykorzystania pamięci przez aplikację jest niezbędna, aby zapobiec ograniczaniu jej działania przez system operacyjny i zapewnić użytkownikom płynne działanie.
W tym poście omówimy, jak działają te limity, jak mierzyć wykorzystanie pamięci za pomocą nowych danych Android Vitals oraz jakie działania możesz podjąć, aby zoptymalizować aplikację lub grę.
Informacje o limitach pamięci
Gdy aplikacja przekroczy budżet pamięci, Android podejmuje stopniowe działania w celu ochrony szybkości reakcji urządzenia:
- Wymiana zRAM: jeśli aplikacja osiągnie przydzielony limit, system wymusi przeniesienie jej stron do zRAM (skompresowanej pamięci RAM). ZRAM zapobiega natychmiastowemu usunięciu stron z pamięci, ale kompresowanie i dekompresowanie stron zwiększa obciążenie procesora, co może powodować zauważalne zacinanie się interfejsu i spowolnienie działania.
- Zakończenie procesu: jeśli aplikacja nadal zwiększa wykorzystanie pamięci powyżej progu zRAM, zostanie zakończona przez system. Aby sprawdzić, czy sesja aplikacji została objęta tymi ograniczeniami w terenie, możesz wywołać funkcję
getDescription()w ramachApplicationExitInfo. Jeśli system zastosował limit, jako przyczynę zakończenia podajeREASON_OTHER, a ciąg opisu zawiera „MemoryLimiter:AnonSwap”. Możesz też korzystać z profilowania opartego na wyzwalaczach za pomocąTRIGGER_TYPE_ANOMALY, aby automatycznie zapisywać zrzuty stosu po osiągnięciu limitu pamięci.
Więcej informacji o limitach pamięci poszczególnych aplikacji i egzekwowaniu ich przez system znajdziesz w dokumentacji limitów pamięci aplikacji na Androidzie 17. Aby przetestować aplikację na różnych konfiguracjach urządzeń, użyj poleceń adb ogranicznika pamięci.
Monitorowanie i diagnozowanie problemów z pamięcią
Nie możesz optymalizować tego, czego nie możesz zmierzyć. Identyfikowanie wycieków pamięci, nadmiernych alokacji sterty i awarii z powodu braku pamięci w ekosystemie Androida wymaga korzystania z dodatkowych narzędzi do monitorowania:
- Ogólny stan aplikacji dzięki Android Vitals: aby uzyskać ogólny wgląd w stan aplikacji na poziomie populacji bez dodatkowych obciążeń, skorzystaj z Android Vitals w Konsoli Google Play. Znajdziesz tam podstawowe dane, takie jak wykorzystanie pamięci (anonimowy RSS + swap) i wykorzystanie pamięci przez bitmapy. Dzięki temu uzyskasz przejrzysty obraz rozkładu pamięci w różnych stanach procesu (pierwszy plan, tło, usługi postrzegane przez użytkownika i pamięć podręczna) oraz zakresach klas pamięci RAM, co pomoże Ci wykryć wartości odstające.
- Śledzenie wyjść z ogranicznika pamięci i błędów braku pamięci za pomocą Firebase Crashlytics: aby być na bieżąco z informacjami o poważnym pogorszeniu wydajności pamięci, zanim wpłynie ono na kluczowe dane, Crashlytics w wersji 20.1.0 wprowadza dodatkowe dane debugowania, które pomagają wykrywać, ustalać priorytety i usuwać wyjątki braku pamięci oraz wyłączenia ogranicznika pamięci. Śledzenie tych zdarzeń wraz z niestandardowymi dziennikami i metadanymi w formie par klucz-wartość zapewnia natychmiastowy kontekst stanu procesu w przypadku awarii pamięci.
- Ślady w terenie z użyciem ProfilingManager: zespołom, które są w stanie utrzymywać platformę obserwacji wydajności, interfejs
ProfilingManagerwprowadzony w Androidzie 15 (poziom interfejsu API 35) umożliwia aplikacji programowe żądanie i zbieranie szczegółowych artefaktów debugowania pamięci, takich jak zrzuty sterty Java i profile sterty, bezpośrednio z urządzeń produkcyjnych. Zrzuty stosu możesz też wywoływać na podstawie określonych sygnałów systemowych, takich jakTRIGGER_TYPE_OOMiTRIGGER_TYPE_ANOMALY.
Więcej informacji o innych technikach monitorowania pamięci znajdziesz w naszej dokumentacji.
Podsumowanie i dalsze kroki
Android rozszerza limity pamięci dla poszczególnych aplikacji we wszystkich klasach pamięci RAM, więc teraz jest dobry czas na sprawdzenie wykorzystania pamięci:
- Nadaj priorytet optymalizacjom pamięci: zapobiegaj wpływowi limitów pamięci aplikacji na działanie aplikacji, stosując sprawdzone metody.
- Monitorowanie wykorzystania pamięci: monitoruj zachowanie pamięci aplikacji, aby wykrywać i rozwiązywać problemy z nieprawidłowym działaniem.
- Zoptymalizuj grę: postępuj zgodnie z najnowszymi wskazówkami dotyczącymi gier i złożonych aplikacji multimedialnych, aby zmaksymalizować oszczędność pamięci w różnych stanach procesu.
Przydatne materiały i źródła
- Zmiany w działaniu Androida 17: limity pamięci aplikacji
- Najważniejsze dane Androida: Wykorzystanie pamięci (pamięć RSS i przestrzeń wymiany) i wykorzystanie pamięci przez bitmapy
- Blog dla deweloperów aplikacji na Androida: Kroki zwiększające efektywność wykorzystania pamięci w Androidzie 17
- Przewodnik dla programistów: zarządzanie pamięcią aplikacji
-
Wiadomości o usługachDziś udostępniamy Androida 17 na większości obsługiwanych urządzeń Pixel. W najbliższych miesiącach pojawią się nowe urządzenia z Androidem 17.
Matthew McCullough • Czas czytania: 13 minut -
Wiadomości o usługachNa konferencji Google I/O 2026 pokazaliśmy, jak najnowsze osiągnięcia w ekosystemie Androida mogą pomóc Ci podnieść jakość aplikacji przy jednoczesnym zwiększeniu efektywności programowania.
Ataul Munim • Czas czytania: 3 minuty -
Wiadomości o usługachFilarem ekosystemu Androida jest nasze wspólne zobowiązanie do budowania zaufania użytkowników. Wraz z rozwojem urządzeń mobilnych zmienia się nasze podejście do ochrony informacji poufnych.
Robert Clifford • Czas czytania: 3 minuty
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.