Általában a rossz memóriakezelés miatt. Megmutatom, hogy miért darál a gép vagy miért lesz gyorsabb egy újraindítás után. Szigorúan laikusoknak, a fejlesztők olvassanak valami mást (ne). Sőt, ez a bejegyzés egyben bevezető is egy "Amit (esetleg) nem tudtál az iPhone működéséről" cikkhez.
Alkalmazásaink sok memóriát használnak, rendszerint jóval többet, mint arra akárcsak a fejlesztőjük gondolt volna. Lehet, hogy 4 GB RAM soknak tűnik, de nem egy népszerű program játszva beleharap a gigabájtos tartományba, mi pedig általában több ilyen népszerű szoftvert futtatunk egyszerre. De sokszor elég egy böngésző is jó sok megnyitott füllel.
Tehát memóriából sosem elég, ezért a fizikailag létező memória helyett szinte minden operációs rendszer ún. virtuális memóriát használ. Ennek többek között az a lényege, hogyha a fizikai memória elfogyni látszik, akkor a ritkán használt/legrégebben használt/statikus tartalmú memóriafoglalásokat kiírja a merevlemezre és csak akkor tölti vissza, ha ismét szükség van rá. A merevlemez persze sokkal-sokkal lassabb a memóriánál, így a visszatöltés is az.
Ennek legszembetűnőbb példája a következő: használjunk valamilyen sok memóriát zabáló alkalmazást (pl. Photoshop), aztán indítsunk el egy böngészőt és nézzünk meg jópár weboldalt. Ezzel jó eséllyel a Photoshop által elfoglalt rengeteg memóriát oprendszerünk kénytelen lesz kiírni a lemezre, hogy legyen hely a böngészőnek. Aztán csukjuk be a böngészőt és klikk vissza a Photoshopra. A válasz rendszerint őrült darálás lesz.
További probléma, hogy sok alkalmazást nem túl jó minőségben fejlesztenek és nem a leghatékonyabban használják a memóriát. Ez még csak-csak elmegy, de a szivárgás (leak) már nem: nagyon könnyű olyan kódot írni, ami a felhasznált memóriatartományokat nem szabadítja fel, így folyamatosan használtként tartja (úgy, hogy gyakorlatilag nem is tud róla). Ezzel memóriánk "elszivárog".
Sajnos alig van olyan szoftver, ami ne szivárogna. A szivárgás által lekötött területek csak akkor szabadulnak fel, ha véglegesen bezárjuk a szivárogtató programot, de persze folyamatosan a háttérben futó dolgok is szivároghatnak, amiket az egyszerű felhasználó nem tud bezárni. Ezért van az, hogy egy újraindítás sok problémát megold, hiszen minden nulláról indul.
A fagyások túlnyomó többsége is memóriakezelési gondokból adódik. Általában akkor száll el egy program, ha olyan memóriaterületre hivatkozik, amire nem kellene: nem férhet hozzá biztonsági okok miatt vagy nem az van már ott, aminek kellene, satöbbi. Ez szinte minden esetben a fejlesztő hibája, nem gondolt olyan esetekre, amire pedig kellett volna.
Szerencsés és általános esetben a hibás memóriaterületre történő hivatkozást észleli az operációs rendszer és egy érthetetlen (a fejlesztő számára is haszontalan!) hibaüzenettel leállítja a programot, azaz "elszáll".
Rossz esetben pedig annyira sikerül összekavarni az operációs rendszer működését, hogy az is elszáll, azaz "lefagy a gép", jöhet a reset.
iMect means internet, media and other cool things. iMect is a small company in Budapest, Hungary. We’ve a big footer on every page where you can discover what we do and what happens with us.
Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis budapesti cég vagyunk. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.