Android to system wielofunkcyjny, dzięki któremu urządzenia mobilne z powodzeniem zastępują komputery. Daje możliwość szybkiego przeglądania Internetu, oglądania filmów, pracy z aplikacjami biurowymi, czy grania. Ba! Umożliwia robienie tego wszystkiego jednocześnie, w tym samym czasie! A jak doskonale wiemy, ten stan rzeczy zawdzięczamy wielozadaniowości (ang. multitasking). Niestety, funkcjonalność ta jest obarczona dużymi potrzebami na zasoby urządzenia i niejednokrotnie spowalnia nasz sprzęt.
Podstawowym wąskim gardłem jest ilość pamięci operacyjnej. Każda uruchomiona aplikacja rezerwuje dla siebie pewną część pamięci RAM, a w razie potrzeby prosi o większą jej ilość. Problemy zaczynają się, gdy chcemy korzystać z wielu programów jednocześnie. Wtedy każdy z nich zabierze pewną ilość pamięci, a system pozostanie bez zasobów! Skutkuje to spowolnionym działaniem, długim czasem reakcji, czy nawet zawieszeniem się systemu.
Ten stan rzeczy jest znany od dawna na komputerach stacjonarnych. Wyobraźmy sobie sytuację, w której komputer wyposażony był w 256 MB pamięci RAM i miał działać płynnie! Co robiono, aby zapewnić oczekiwaną szybkość? Rozszerzano pamięć operacyjną. W tym celu wyznaczano na dysku twardym specjalne miejsce, które stanowiło dosłowne przedłużenie RAMu. Kiedy system uznawał, że dana informacja jest na razie niepotrzebna – przenosił ją na dysk, zaś w momencie zapotrzebowania na nią – zwyczajnie ją odczytywał. Jest to tzw. plik wymiany. Jak wiemy, oprócz powiększania pamięci RAM, miał on swoje wady: były zdecydowanie wolniejszy i zakłócał swobodny dostęp do innych danych na dysku.
Standardowa wersja systemu Android nie posiada partycji wymiany, ale daje w nasze ręce rozwiązanie bardzo zbliżone, oznaczane jako zRAM. Oparte jest ono na fakcie, że większość informacji zawartych w pamięci można skompresować, dzięki czemu zajmą one znacznie mniej miejsca, a w ten sposób na tej samej przestrzeni zmieścimy więcej danych. Dlatego też wyznacza się określoną przestrzeń RAMu, w której będą składowane dane uznane przez system za chwilowo niepotrzebne (np. podczas przejścia z gry do przeglądarki internetowej). Zostaną one skompresowane i zapisane. Następnie w momencie zapotrzebowania na nie (powrót do gry) będą one odczytane, zdekompresowane i umieszczone w normalnej przestrzeni operacyjnej.
Trudność pojawia się w słowach: kompresja i dekompresja. Czynności te wymagają pracy procesora i zajmują sporo czasu. Dlatego też przyczyniają się do spowolnienia systemu i zwiększenia zapotrzebowania na energię elektryczną. Podsumujmy teraz krótko wszystkie rozważania na poniższym wykresie.
Warto jeszcze wspomnieć, że informacje można kompresować z różną intensywnością tak, jak obrazy JPG mogą być lepszej i gorszej jakości, choć w przypadku zRAM oryginalna informacja zostaje nietknięta, a wydłuża się proces kompresji i dekompresji. Dlatego też stopień kompresji ma wpływ na „dodatkową” przestrzeń pamięci, jak i na wzmożoną aktywność procesora.
Okazuje się, że nie ma nic za darmo. Można uzyskać więcej pamięci operacyjnej kosztem spowolnienia systemu i zmniejszonej żywotności baterii. Czy warto? Cóż, zależy to od sprzętu, którym dysponujemy. W starszych telefonach korzyści przerosną wady, a telefon zauważalnie przyspieszy. Natomiast w nowych konstrukcjach wyposażonych w ogromną ilość pamięci RAM, zabieg ten będzie praktycznie zbędny. Pamiętajmy jeszcze, że część producentów domyślnie włącza działanie zRAMu. Podobna sytuacja jest w przypadku wszelkich ROMów tworzonych przez miłośników Androida. Dlatego warto się zainteresować zakładką „Zarządzanie pamięcią”, aby móc świadomie dokonywać zmian w systemie.
Marcin Ziąbek