Jaki jest cel ustawienia minimalnego rozmiaru sterty w aplikacji na Androida?

W aplikacji Kalendarz google dla systemu Android OS, można natknąć się na tę linię w metodzie onCreate CalendarActivity .

// Eliminate extra GCs during startup by setting the initial heap size to 4MB.
VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE)

Może ktoś wyjaśnić dlaczego ustawienie go na 4MB wyeliminuje GCs?

Author: MysticMagicϡ, 2009-10-05

1 answers

JVM zazwyczaj zaczyna się od przydzielenia stosunkowo małej sterty. Następnie po każdym uruchomieniu GC sprawdza, ile jest wolnej pamięci sterty. Jeśli stosunek wolnej sterty do całkowitej sterty jest zbyt mały, JVM doda więcej pamięci do sterty (do maksymalnego skonfigurowanego rozmiaru sterty).

Drugim istotnym faktem jest to, że GC działa najefektywniej, gdy jest dużo pamięci do odzyskania. Pod warunkiem, że nie napotkasz ogólnych limitów zasobów systemowych (np. wyzwalanie stronicowania lub swapping), uzyskujesz lepszą wydajność aplikacji, uruchamiając z dużą stertą niż małą.

Załóżmy, że pisarz aplikacji wie, że aplikacja najprawdopodobniej potrzebuje określonej ilości sterty(np. Ustawienie tego rozmiaru jako minimalnego rozmiaru sterty oznacza, że JVM nie musi uruchamiać GC, gdy sterta wypełnia się (powiedzmy) 1MB, 2MB i 3MB. W rezultacie JVM uruchamia garbage collector mniej razy podczas uruchamiania aplikacji i normalnego działania, Aplikacja uruchamia się szybciej i użytkownik widzi mniej przerw GC.

 16
Author: Stephen C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-05 06:17:16