Obecnie mam pustą aplikację LibGDX
, która ma nic nie ma. Nie renderuje niczego, ani niczego nie aktualizuje. To jest po prostu pusty Screen
. Kiedy wdrażam aplikację na Androida, wita mnie przerażająca konsumpcja pamięci. Korzystanie DDMS utworzyć następujący zrzut stosu, gdy aplikacja jest uruchomiona na moim urządzeniu:Android graficzne ogromne zużycie pamięci sterty? - LibGDX
Najistotniejszą użycie pamięci jest 13,163 MB 1-bajtowy tablicy alokacji. Czy to nie połowa kupy ?!
Sprawdziłem alokacje i zobaczył, że nic nie wskazywał przydzielenia tej wielkości:
Teraz za pomocą Eclipse MAT I analizować zrzutu sterty:
Tak wysokie wykorzystanie pamięci nadal pochodzi z tablic bajtowych []. Analizując byte [] Rozdział dalej wymyślić to:
Teraz widzę ogromny byte [] przydziały pochodzą z android grafiki. Nawet niczego nie rysuję! Czy jest jakiś sposób, aby uniknąć sytuacji, w której część z Androidem w tej aplikacji zajmuje połowę sterty. To powoduje, że nadmierne zbieranie śmieci ma miejsce, gdy coś się dzieje, czy jest to normalne i po prostu muszę sobie z tym poradzić?
Uwaga: Używam tego na Samsung Galaxy S4 z libgdx wersji 1.4 (lub cokolwiek jest najnowsza wersja)
UPDATE: ja nie odkrył, że przydział 14-13MB bajt tablicy jest normalne dla aplikacji ale wciąż mam problem. Mój rozmiar sterty jest za mały. Jeśli grafika z Androidem zajmuje połowę mojej sterty, mam mało miejsca na nic przydatnego, a śmieciarz szaleje. Na innej aplikacji stworzyłem ze starszą wersją libgdx (niezaprzeczalnie słabiej zakodowaną aplikacją), a wielkość sterty to 73 Mb. Jak mogę zwiększyć rozmiar sterty? Domyślam się, że 73 Mb jest dość duże i jak widać większość z nich nie jest używana. Oto statystyki kupie starszej aplikacji:
Czy próbowałeś przydzielić trochę śmieci, aby spróbować przekroczyć rozmiar sterty pierwszej aplikacji, która ma mały rozmiar sterty? Jeśli nie, zrób to. Czy automatycznie zwiększa swój rozmiar sterty, gdy jest to zrobione? –