Android szabad RAM – mennyi az annyi?

Android servicesAz Android rendszerek memóriakezeléséről már írtam egy korábbi cikkemben, most a rendszer által mutatott (vagy talán látható?) memóriával (RAM) foglalkoznék. Ha bemegyünk a futó programokhoz akkor a RAM indikátor két részből tevődik össze, egy “használt” és egy “szabad” RAM látszik. Nekem X10i-m van, barátnőmnek pedig Ray, az X10i 384Mb RAM-ot a Ray 512Mb RAM-ot tartalmaz, elvileg (vagy talán gyakorlatilag is). Csakhogy amikor összeadom a használt és a szabad RAM mennyiségét soha nem jön ki ez a szám, mindig kisebb lett.

Nagyon sok magyar és külföldi oldalon kutattam után, hogy mi lehet ennek az oka de kielégítő választ nem találtam sehol. Volt ahol a videó-memóriára, volt ahol a rendszerre kenték a dolgot, hogy azok használták fel a hiányzó RAM-ot. Egy azonban biztos, hogy nem látszik annyi RAM, amennyi fizikailag benne van a telefonban.

Sony Ericsson X10i adatok, számítások:
– gyári memória mérete: 384Mb
– általam összeszámolt: 250Mb (szabad + használt)
– hiányzik: 134MBb (gyári – általam számolt) -> 35% hiányzik
– feltételezésem szerint ezt a 35%-ot a rendszer magja a kernel és a főbb rendszerfolyamatok foglalják le maguknak.

Sony Ericsson Ray adatok, számítások:
– gyári memória mérete: 512Mb
– általam összeszámolt: 300Mb (szabad + használt)
– hiányzik: 212MBb (gyári – általam számolt) -> 41% hiányzik
– feltételezésem szerint ezt a 41%-ot a rendszer magja a kernel és a főbb rendszerfolyamatok foglalják le maguknak.

Ha valaki esetleg tudja, hogy pontosan mi is használja fel az eltűnt memóriát, az legyen kedves kommentben írja meg. Köszönöm! 🙂

UPDATE 2012.05.21.
Sikerült a nyomára akadnom a hiányzó ramnak, tényleg a rendszerfolyamatok foglalják le maguknak és a hardvereknek. Ezen az oldalon bővebben olvashattok róla. A lényeg annyi, hogy a rendszer működéséhez nagyjából 91 Mb ram szükséges Gingerbread esetén valamint még az Elixir2 rendszer-információival megnézetem, nagyjából 35 Mb ram-cache van használatban átlagosan. Ez azt jelenti, hogy körülbelül 126 Mb ram a rendszernek van a birtokában és ezt nem mutatja a memóriakezelő sem. De ez az érték mindig változik, ezért van az, hogy a memóriakezelőben ha összeadjuk a használt és szabad ram-ot, akkor mindig más végösszeget kapunk. Szóval Sony Ericsson X10i esetében a RAM áll egy induláskori durván 250Mb (használt és szabad RAM összesen) + durván 91 Mb rendszer által lefoglalt RAM + durván 35 Mb RAM-CACHE összességéből. Ez mindösszesen nagyjából 376 Mb ram ami már majdnem 384 Mb, ezt a tévedést tudjuk be annak, hogy több programmal mértem és volt pár másodperc időeltérés is, ez idő alatt változhatott az aktuálisan használat ram megoszlása.

Android Gtalk használata (Google csevegő)

Gtalk logo

Gtalk

A napokban kezdtem el használni a telefonom Gtalk 1.3-as szoftverét. Meglepően kulturáltra és használhatóra sikerült kis program. Mint mindig, most is hülye kérdésekre kerestem a választ magamban, ezeket osztanám most meg Veletek.

Először is, hogyan működik a program. Alapvetően már a telefon bekapcsolásakor betöltődik (SonyEricsson X10) a memóriába, de nem jelentkezik be csak akkor ha belépsz a programba. Ilyenkor viszont minden kérdés nélkül automatikusan teszi azt. Ha bezárod a programot akkor pedig a háttérben fut tovább bejelentkezve. Ha azt szeretnéd, hogy kijelentkezzen, akkor külön meg kell tenni ezt az Opciók között a Kijelentkezéssel.

A program a beállításai között felkínál néhány lehetőséget:

gtalk automatikus bejelentkezés

Gtalk automatikus bejelentkezés

Az automatikus bejelentkezés a legérdekesebb számomra, ugyanis nem teljesen egyértelmű a működése. Az ember azt várná, ha bepipálja, akkor a telefon bekapcsolásakor bejelentkezik a Gtalk program, de ez nem így van. Csak abban az esetben jelentkezik be, ha úgy kapcsoljuk ki a készüléket, hogy a programba be voltunk lepve kikapcsoláskor. Ebben az esetben bekapcsoláskor automatikusan be is lép, de ha kijelentkeztünk kikapcsolás előtt, akkor nem fog belépni akkor sem ha az auto login be van pipálva. Logikus ez vajon? Ki-ki maga döntse el 🙂

gmail zöld robotok

Gmail zöld robotok

Mobil állapot jelzése, ez egy hasznos ki dolog, így a Gtalk-ot és a Gmail-t használók is láthatják, hogy éppen miről jelentkeztünk be (Gmail béta részében érhető el a “Zöld robotok”, így a webes felületen is láthatjuk, hogy ki van mobilról és ki PC-ről bejelentkezve).

Gtalk ismerős lista (mobil vagy PC jelöléssel)

Gtalk ismerős lista (mobil vagy PC jelöléssel)

A Gtalk kliens egy kis robotot tesz a név mellé ha valaki mobilról lép be.

A nincs a gépnél állapot jelzése is hasonló segítséget nyújt, a képernyő kikapcsolásakor vált át arra. Ez sem teljesen tiszta mivel ha kikapcsolom a képernyőt, akkor sem vált “Nincs a gépnél” állapotra. Ez egy ÉS kapcsolat, ha a képernyő kikapcsolt és eltelt 10 perc.

A beszélgetési előzmények megjelennek a Gmail felületén a Csevegések menüben, de ugyanezt a Gtalk-on belül nem lehet elérni. Ott az előzmények helyileg tárolódnak és csak a telefonon már lefolytatott beszélgetéseket lehet visszaolvasni valamint szinkronizálja a Gmail fiókkal is azt. Ha a telefonon töröljük a beszélgetési előzményeket, akkor az csak a telefon cache memóriájából törlődik, a Gmail felületéről nem.

A “Csengőhang kiválasztása” alatt lehet beállítani, hogy milyen hangjelzést adjon a készülék ha üzenetet kapunk. Amit itt állítunk be hangot azt minden esetben hallani fogjuk amikor:
– ki van kapcsolva a kijelző
– a Csevegő főképernyőjén vagyunk
– chat-elünk valakivel, de egy másik ismerősünk is ír nekünk.
Ezekben az esetekben a hangjelzés mellett a státuszsoron is megjelenik egy értesítés az üzenet elejével együtt. Ellenben ha épp valakivel chat-elünk, akkor nem fogunk hangjelzést kapni új üzenet érkezésekor (ez logikus is).

Energiahasználatról néhány szót. Mivel a program minden esetben betöltődik a memóriába, így nem számít, hogy be vagyunk-e jelentkezve vagy sem. Csak az aktív chat-elés befolyásolja az akkumulátor merülését.

Memória terén sem mondható nagy étvágyúnak, körülbelül 4-14 MB között mozog a memória igénye, használattól függően.

Remélem tetszett az írásom és hasznosnak találtátok. Ha igen, légyszi +1 -eljétek, értékeljétek és kommenteljétek 🙂 Köszi!

Kép forrás 1: http://lifehacker.com/5461265/prevent-google-talk-on-android-from-automatically-signing-in
Kép forrás 2: http://androidandme.com/2009/11/news/see-which-gmail-friends-have-android-with-green-robot/
Állapot timeout forrás: http://www.google.com/support/forum/p/android/thread?tid=13a93b74e69e455b&hl=en

Android memóriakezelés

A kezdet

Pár hónapja vettem egy Sony Ericsson Xperia X10-es telefont. Eddig szinte csak Symbian-os vagy S40-es Nokiáim voltak, de a technológiai fejlődés megállíthatatlanul utat tört magának és nekem is lépést kellett tartanom a korra. Hosszas mérlegelés után döntöttem ennél a készüléknél és operációs rendszernél.

Idő szülte érdeklődés

Akinek hozzám hasonlóan ez egy ismeretlen terep, az gyorsan belefuthat a sokak által használt “Task killer” programokba. Én is így voltam ezzel, mindenki javasolta, hogy szükséges és kell. De ahogy egyre jobban elmélyedtem ebben a témában kiderült, hogy nem csak szükségtelen de még kis mértékben káros is. Káros a telefon készenléti idejére, ugyanis az alkalmazások újraindítása megterheli a telefont (processzor, akkumulátor használat növekedés az alkalmazások újraindításakor). Miután kilőttem egy csomó task-ot kisvártatva ismét elindult majdnem mind újra. Sajnos erre a problémára nem igazán találtam választ (magyar oldalakon) sehol. Ezért úgy döntöttem megosztom ezt az infromáció kissé konyhanyelven, hogy más ne szívjon annyit mint én.

Megoldás

A kérdésemre a választ itt találtam meg. Mivel ezen az oldalon minden le van írva ezért én itt csak kivonatolom az olvasottakat. A régebbi (1.5 és 1.6) Android rendszerek esetében még nem volt teljesen tökéletes a memória kezelése, ott még volt értelme task killert használni. Viszont a 2.1 és 2.2 (és fölött) már szinte semmi haszna nincs. Egyszerűen fogalmazva a rendszer mindig annyi memóriát szabadít fel magának amennyire szüksége van, intelligensen a következő módon. A memóriában tárolt programok 5 csoportra vannak bontva melyek a következők:

Android memóriakezelés

  1. Active processes (Aktív folyamatok) – Ez a éppen használat, látható folyamatok, mondjuk egy e-mail írása.
  2. Visible processes (“Látható” folyamatok) – Ezek is szem előtt vannak még (widget mondjuk), de itt nincs interakció a felhasználó és a program között.
  3. Started Service Processes (Szervizek) – Ezek már olyan folyamatok melyek a háttérben futnak, nincs interakció a felhasználóval és nem is láthatóak. Kisebb az erőforrás igényük is ezáltal.
  4. Background processes (Háttér folyamatok) – Ezek a szerviz nélküli, háttérbe tett folyamatok. Ezek olyan folyatok amelyekből már “gyomlálhat” a rendszer. A legrégebben “látott” folyamatot törli először ha szükség van erőforrásra.
  5. Empty processes (“Üres” folyamatok) – Ez az egyszer már elindított, de azóta bezárt folyamatok. Azért vannak a memóriában, hogy ha legközelebb szükség lenne rájuk, akkor sokkal gyorsabban be tudnak töltődni (el tudnak indulni), mintha ezt a memória kártyáról tennék. Itt is igaz a legrégebben “látott” (leállított) folyamatot veszi ki először a memóriából a rendszer ha erőforrást kell felszabadítania.

Bővebb, angol nyelvű leírás itt olvashatjátok (fentebb is linkelt): http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/

Remélem tudtam segíteni egy kicsit az Android memóriakezelés megértésében.