Idealus RAM kiekis, kurio telefonams reikia sklandžiam kelių užduočių atlikimui, yra gana diskutuojama tema. „Apple“ susitvarko su mažesniu „iPhone“ dydžiu, kuris dažnai yra labiau tinkamas naudoti nei „Android“ sprendimai. „iPhone“ taip pat nerasite jokio RAM atminties valdymo, o „Android“ turi tam skirtą funkciją.
Jei einate, pavyzdžiui, Samsung Galaxy telefonuose į Nustatymai -> Prietaiso priežiūra, čia rasite RAM indikatorių su informacija, kiek vietos yra laisvos ir kiek jos užimtos. Spustelėję meniu galite pamatyti, kiek atminties užima kiekviena programa, taip pat čia yra galimybė išvalyti atmintį. Čia taip pat yra RAM Plus funkcija. Jo prasmė yra ta, kad jis atims tam tikrą GB skaičių iš vidinės atminties, kurią naudos virtualiai atminčiai. Ar galite įsivaizduoti kažką panašaus į „iOS“?
Išmanieji telefonai remiasi RAM. Jis skirtas saugoti operacinę sistemą, paleisti programas ir taip pat saugoti kai kuriuos duomenis talpykloje ir buferinėje atmintyje. Taigi RAM turi būti sutvarkyta ir valdoma taip, kad programos galėtų veikti sklandžiai, net jei jas nuleisite į foną ir po kurio laiko vėl atidarysite.
Swift vs. Java
Tačiau paleidžiant naują programą, turite turėti laisvos vietos atmintyje, kad galėtumėte ją įkelti ir paleisti. Jei taip nėra, vieta turi būti atlaisvinta. Todėl sistema priverstinai nutrauks kai kuriuos veikiančius procesus, pvz., jau pradėtas programas. Tačiau abi sistemos, t. y. „Android“ ir „iOS“, su RAM veikia skirtingai.
„iOS“ operacinė sistema parašyta „Swift“ kalba, o „iPhone“ iš tikrųjų nereikia perdirbti panaudotos atminties iš uždarytų programų atgal į sistemą. Taip yra dėl „iOS“ kūrimo būdo, nes „Apple“ gali visiškai ją valdyti, nes ji veikia tik „iPhone“ įrenginiuose. Priešingai, „Android“ parašyta „Java“ kalba ir naudojama daugelyje įrenginių, todėl ji turi būti universalesnė. Kai programa nutraukiama, jos užimta vieta grąžinama operacinei sistemai.
Gimtasis kodas vs. JVM
Kai kūrėjas rašo „iOS“ programą, jis ją tiesiogiai sukompiliuoja į kodą, kuris gali būti paleistas „iPhone“ procesoriuje. Šis kodas vadinamas vietiniu kodu, nes jam paleisti nereikia jokios interpretacijos ar virtualios aplinkos. Kita vertus, „Android“ skiriasi. Kai sukompiliuojamas Java kodas, jis konvertuojamas į tarpinį Java Bytecode kodą, kuris nepriklauso nuo procesoriaus. Todėl jis gali veikti naudojant skirtingus skirtingų gamintojų procesorius. Tai turi didžiulių pranašumų kelių platformų suderinamumui.
Žinoma, yra ir minusas. Kiekvienam operacinės sistemos ir procesoriaus deriniui reikia aplinkos, žinomos kaip „Java Virtual Machine“ (JVM). Tačiau vietinis kodas veikia geriau nei kodas, vykdomas per JVM, todėl naudojant JVM tiesiog padidėja programos naudojamos RAM kiekis. Taigi iOS programėlės sunaudoja mažiau atminties, vidutiniškai 40 proc. Taip pat dėl šios priežasties „Apple“ neturi aprūpinti savo „iPhone“ tiek RAM, kiek „Android“ įrenginiuose.
Nesu tiksliai ekspertas, bet apibūdinsiu savo požiūrį iš vartotojo, kuris 15 metų naudojo Android ir dabar jau 2 mėnesius naudojasi iPhone 13 mini, perspektyvos. „Android“ su 8 GB atmintimi (pastaruoju metu „Samsung S21“, „Flip3“) dažniausiai po tam tikro laiko grįždavau prie anksčiau paleistos programos ir ji vis dar buvo įkelta į RAM, todėl viskas neprasidėjo iš naujo ir galėjau sklandžiai pasiimti kur likučiai. Kita vertus, net ir turėdamas 8GB atmintį, kartą per savaitę „nušaudavau“ visas programas, kad išvalyčiau operatyviąją atmintį, nes su pilna atmintimi sistema pradėjo lėtėti. Man nekyla problemų dėl „iPhone“ sulėtinimo, tačiau, kita vertus, turiu pasakyti, kad naudojant beveik identiškas programas, atvirkščiai, man reguliariai nutinka taip, kad grįžus prie anksčiau paleistos programos, jis vėl visiškai įkeliamas ir negaliu sklandžiai tęsti ten, kur baigiau.
Kuris variantas geresnis? Sunku pasakyti... „Android“ programėlių sunaikinimas ir RAM išvalymas yra dviejų paspaudimų reikalas. Visą aplikaciją dar kartą įkelti į iPhone nėra taip daug laiko, todėl tai nėra taip svarbu... Žinoma, idealu būtų daugiau RAM iPhone ir multitasking kaip Android :-D
Velnias, tai vėl kvaila. Viena vertus, „Android“ jau seniai neveikia „Java“, tam ir skirtas „Kotlin“. Šiukšlių surinkėjas yra atsakingas už atmintį, kuri yra pati paprasčiausia iOS, kuri egzistuoja net ir su trūkumais. Visa tai, kad „iOS“ užmuša programas, kai tik jas pašalinate iš ekrano. Tai atlaisvina atminties, kaip ir Linux sistemoje, kai įvedate proceso kill pid. Štai kodėl taip ilgai užtrunka atidaryti naršyklę ir grįžti prie ankstesnio darbo. Šis straipsnis yra pažodinis X metų senumo straipsnio, kurį sukūrė iOS fanatikas, neturintis programavimo žinių, vertimas. Taip, žinoma, už atminties valdymą daugiausia atsako programuotojas, tai, ką daro programa. Jei jis kosėja, pasaulyje yra atminties nutekėjimas ir pqk galite turėti X Gb atminties ir ji vis tiek nenaudinga. Ir tuo metu, kai daugelis programų yra tik „WebView“, tai labai paprasta, nes ji pati valgo tai, ką gali. Straipsnis nesąmonė, šiukšlės.
Android naudoja nebe jvm, o dvm. Be to, jis sukompiliuoja jį į vietinį vykdomąjį failą
„Java“ vis dar yra „Android“.