PDAclub.pl - Forum użytkowników technologii mobilnych
Android OS => Android - Ogólnie => Wątek zaczęty przez: ncc74656 w Marzec 14, 2011, 16:30:14
-
Witam,
Od kilku dni jestem użytkownikiem telefonu z androidem i zauważyłem coś dziwnego. Chodzi o małe aplikacje np. 500KB które zajmują 20 MB ramu. W windows mobile czegoś takiego nie widziałem. IMO przy takim rozrzucie 512MB w androidzie jest mniej więcej jak 12MB w WM. Czegoś tutaj ewidentnie nie rozumiem, proszę o pomoc w zrozumieniu tego zjawiska.
Pozdrawiam,
ncc74656
-
a jakieś przykłady?
uzywam Androida od 1 i 1/2 roku miałem kilka róznych modeli i niczego podobnego nie zauważyłem...
-
Np. TuneIn radio plik instalacyjny 1.26 MB, OS monitor pokazuje 2 procesy gdzie pierwszy ma Memory 20MB a drugi 18MB.
-
Ale co z tego? Jeśli Ci to przeszkadza to ubij. Poza tym - wolny ram == stracony ram.
Android duuużo lepiej zarządza pamięcią niż WM. Używa jej wręcz ile może, a jeśli jest potrzebna to uwalnia.
-
Wiesz to tak jak czasem z ludźmi. Niby człowiek jest mały, chudy, ale jak ma szybki metabolizm to co godzina coś je(ale dałem porównanie :E)
-
Np. TuneIn radio plik instalacyjny 1.26 MB, OS monitor pokazuje 2 procesy gdzie pierwszy ma Memory 20MB a drugi 18MB.
To wyjątkowo łatwo wyjaśnić: aplikacja korzysta z zewnętrznych źródeł, które pobiera z internetu - w przypadku radia jest to chyba oczywiste?
-
Rozumiem że lepiej zarządza pamięcią ale w takim razie gdzie jest limit? Np. rozważmy taką sytuację że przez chwilę posłucham sobie radia z internetu, przekopiuje jakiś plik managerem plików, zaglądnę do marketu itd chodzi o to że mamy kilkanaście albo nawet kilkadziesiąt procesów gdzie każdy używa jakiejś ilości pamięci. Wolna pamięć po restarcie to 150 MB. Gdzie w takim wypadku jest granica? Na bieżąco ręcznie zamykać to co nie jest potrzebne albo czekać aż telefon przestanie reagować?
-
Najlepiej kontrolować co jakiś czas, bo może się coś włączyć co żre baterie.
A procesów nie trzeba monitorować co 5 min. Ja np. killuje(też mam OS Monitor) kiedy widzę, że mam mało pamięci RAM lub gdy Samsung mi zwalnia.
-
panowie, przecież wielkość aplikacji (plik instalacyjny) nie ma żadnego związku z tym ile pamięci aplikacja dynamicznie zaalokuje
i co do tego ma zużycie baterii ?
niczego pod androidem nie musisz ubijać - android sam zamraża zbędne procesy
jeśli jednak odpalisz aplikacje działające w tle, tzn. wymagające tego aby być cały czas aktywne - tunein radio jest takim przykładem ponieważ cały czas odbiera i odtwarza strumień (nawet jak się przełączysz na coś innego), do tego np. sygic aura (też działa w tle), itd., itd. to prędzej czy później, czy to w winmo czy androidzie (nie ma to znaczenia) zasoby się skończą
do tego cały czas są usługi, czyli właśnie takie chodzące w tle procesy android'a, które są niezbędne do jego działania
-
poza tym automatyczne mechanizmy zarządzania pamięcią dynamiczną nie są niezawodne.
-
Przykładowa aplikacja tunein radio nic nie odtwarza. Tylko to uruchomiłem żeby sprawdzić co z pamięcią się stanie. Wczoraj zauważyłem że miałem wolne 100MB kiedy telefon zadzwonił, porozmawiałem kilka minut i widzę wolne 115 MB. Rozumiem że dynamiczne alokowanie pamięci jakoś sobie radzi ale też z poziomu użytkownika dobrze byłoby mieć jakiś wpływ na to. Jeśli poziom wolnej pamięci spadnie do 50MB a ja potrzebuje uruchomić aplikacje która potrzebuje 100MB to o tym że wszystko będzie spowalniać albo się zawiesi dowiem się dopiero po fakcie. Co stałoby się kiedy ktoś w takiej sytuacji zadzwoni? Czy osoba dzwoniąca będzie czekać aż android po drugiej stronie zwolni pamięć żeby wydać z siebie jakiś dźwięk i zawibrować?
-
Przykładowa aplikacja tunein radio nic nie odtwarza. Tylko to uruchomiłem żeby sprawdzić co z pamięcią się stanie. Wczoraj zauważyłem że miałem wolne 100MB kiedy telefon zadzwonił, porozmawiałem kilka minut i widzę wolne 115 MB. Rozumiem że dynamiczne alokowanie pamięci jakoś sobie radzi ale też z poziomu użytkownika dobrze byłoby mieć jakiś wpływ na to. Jeśli poziom wolnej pamięci spadnie do 50MB a ja potrzebuje uruchomić aplikacje która potrzebuje 100MB to o tym że wszystko będzie spowalniać albo się zawiesi dowiem się dopiero po fakcie. Co stałoby się kiedy ktoś w takiej sytuacji zadzwoni? Czy osoba dzwoniąca będzie czekać aż android po drugiej stronie zwolni pamięć żeby wydać z siebie jakiś dźwięk i zawibrować?
nic takiego się nie stanie - nie musisz się bać o takie rzeczy
zaczynasz traktować android'a jako OS, który wymaga tuningu do działania - nie ma potrzeby abyś miał kontrolę nad takich zachowaniem
to wewnętrzna sprawa OS'a i android spokojnie daje sobie z tym radę
jeśli Ci brak RAM zmień telefon na inny, który ma tego więcej zamiast próbować wkładać paluchy w maszynerię
jest taki task killer, który tylko tuninguje zachowanie androida zamiast klasycznego wycinania aplikacji wg swojego własnego algorytmu
ale nie pamiętam już jego nazwy
btw,
jakiego telefonu i romu używasz ?
-
W momencie ubijania ręcznego aplikacji dla zwolnienia pamięci zdarz się że system pracuje wolniej, bo próbuje zamrozić aplikację która nie pracuje.
Ale ostatnio zdarzyło się moje siostrze że miała 0MB wolnej pamięci RAM :O, mimo że nie miała odpalonych żadnych większych programów.
-
To ja też Cię uspokoję, ncc: trochę się bawiłem z różnymi romami. I nawet w przypadku najgorzej przygotowanych, zapchanych, w których launcher się wieszał, pamięć była zapchana i nie szło uruchomić szybko nawet pasjansa nigdy nie zdarzyło mi się, żebym miał problem z odbieraniem przychodzących rozmów. Tak więc wrzuć na luz. :)
btw. Obecnie w OS'ach (nowsze windowsy i macos'y, systemy mobilne) obowiązuje nieco inna filozofia niż za czasów win95 i winmo 5.0 - pamięć niewykorzystana, to pamięć marnująca się. Jak sam zauważyłeś dynamiczna alokacja pamięci to teraz obowiązujący standard i co ważniejsze raczej lepszy od dawnych rozwiązań.
-
btw. Obecnie w OS'ach (nowsze windowsy i macos'y, systemy mobilne) obowiązuje nieco inna filozofia niż za czasów win95 i winmo 5.0 - pamięć niewykorzystana, to pamięć marnująca się. Jak sam zauważyłeś dynamiczna alokacja pamięci to teraz obowiązujący standard i co ważniejsze raczej lepszy od dawnych rozwiązań.
przecież pamięć alokowana dynamicznie (zamiast statycznego określania w kodzie źródłowym) jest w każdym języku programowania praktycznie od 20 lat (jak nie dłużej)
jak sobie kupiłem pierwszy kompilator borland pascal na 4 dyskietkach 3,25" dla ms dos to (jeśli mnie pamięć nie myli) już można było alokować pamięć dynamicznie - to musiało być około 1990, a może nawet wcześniej ... :E
a taka składnia C miała od zarania dziejów f-cję alloc()
od dawna każda dobrze napisana aplikacja alokuje pamięć dynamicznie, a OS nią zarządza jeśli jej potrzebuje
a to o czym piszesz to zarządzanie przydzieloną poszczególnym aplikacjom pamięcią, i to linuxy i windows robią też od kilkunastu lat - swap linuxowy czy też pagefile.sys z windows to właśnie przedłużenia fizycznej pamięci
to o czym pisze ncc mogło być dziwne w czasach MS DOS ale nie teraz :-)
-
Oj, bo ja zgred jestem. :grin:
Ale co do pomyłki w kwestii określeń to masz rację - dzięki za sprostowanie. Tak czy owak wraz z odejściem od WinMo 6.5 i starszych raczej skończyły się czasy, kiedy wyznacznikiem dobrego romu były ilość wolnej pamięci, jaką udostępniał zaraz po starcie i skuteczność task-killera.
-
pytanie o aplikację z zapisem cpu i ram do pliku przeniesiona tutaj http://pdaclub.pl/forum/oprogramowanie-android/poszukiwane-aplikacje/msg1466866/#msg1466866 (http://pdaclub.pl/forum/oprogramowanie-android/poszukiwane-aplikacje/msg1466866/#msg1466866)
zamykam wątek