Tilvalið magn af vinnsluminni sem símar þurfa fyrir slétta fjölverkavinnslu er nokkuð umdeilt efni. Apple kemst af með minni stærð í iPhone, sem er oft nothæfara en Android lausnir. Þú munt heldur ekki finna neina vinnsluvinnsluminni á iPhone, en Android hefur sína eigin sérstaka aðgerð fyrir þetta.
Ef þú ferð, til dæmis, í Samsung Galaxy símum til Stillingar -> Umhirða tækisins, þú finnur vinnsluminni vísir hér með upplýsingum um hversu mikið pláss er laust og hversu mikið er upptekið. Eftir að hafa smellt á valmyndina geturðu séð hversu mikið minni hvert forrit tekur og þú hefur einnig möguleika á að hreinsa minnið hér. RAM Plus aðgerðin er einnig staðsett hér. Merking þess er sú að það mun bíta af sér ákveðinn fjölda GB úr innri geymslunni, sem það mun nota fyrir sýndarminni. Geturðu ímyndað þér eitthvað svona á iOS?
Snjallsímar treysta á vinnsluminni. Það þjónar þeim til að geyma stýrikerfið, ræsa forrit og einnig til að geyma sum gögn þeirra í skyndiminni og biðminni. Þannig þarf vinnsluminni að vera skipulagt og stjórnað á þann hátt að forrit geti keyrt snurðulaust, jafnvel þótt þú sleppir þeim í bakgrunninn og opni þau aftur eftir smá stund.
Swift vs. Java
En þegar þú byrjar nýtt forrit þarftu að hafa laust pláss í minni til að hlaða og keyra það. Ef svo er ekki þarf að rýma staðinn. Kerfið mun því stöðva af krafti sumum keyrandi ferlum, svo sem forritum sem þegar hafa byrjað. Hins vegar virka bæði kerfin, þ.e.a.s. Android og iOS, öðruvísi með vinnsluminni.
iOS stýrikerfið er skrifað í Swift og iPhone þarf í raun ekki að endurvinna notað minni úr lokuðum forritum aftur inn í kerfið. Þetta er vegna þess hvernig iOS er smíðað, vegna þess að Apple hefur fulla stjórn á því þar sem það keyrir aðeins á iPhone. Aftur á móti er Android skrifað í Java og er notað á mörgum tækjum, svo það verður að vera alhliða. Þegar forritinu er hætt er plássinu sem það tók aftur í stýrikerfið.
Innfæddur kóða vs. JVM
Þegar þróunaraðili skrifar iOS app, setja þeir það beint saman í kóða sem getur keyrt á iPhone örgjörva. Þessi kóði er kallaður innfæddur kóða vegna þess að það þarf enga túlkun eða sýndarumhverfi til að keyra. Android er aftur á móti öðruvísi. Þegar Java kóða er sett saman er honum breytt í Java Bytecode millikóða, sem er örgjörvaóháður. Það getur því keyrt á mismunandi örgjörvum frá mismunandi framleiðendum. Þetta hefur mikla kosti fyrir samhæfni milli palla.
Það er auðvitað líka galli. Hvert stýrikerfi og örgjörva samsetning þarf umhverfi sem kallast Java Virtual Machine (JVM). En innfæddur kóði skilar betri árangri en kóði sem keyrður er í gegnum JVM, þannig að notkun JVM eykur einfaldlega magn vinnsluminni sem forritið notar. Þannig að iOS forrit nota minna minni, að meðaltali 40%. Það er líka ástæðan fyrir því að Apple þarf ekki að útbúa iPhone sína með eins miklu vinnsluminni og það gerir með Android tækjum.
Ég er ekki nákvæmlega sérfræðingur, en ég mun lýsa sjónarhorni mínu frá sjónarhóli notanda sem hefur notað Android í 15 ár og er núna 2 mánuðir í iPhone 13 mini. Á Android með 8GB minni (síðast Samsung S21, Flip3) fór ég venjulega aftur eftir ákveðinn tíma í forritið sem áður var opnað og það var enn hlaðið í vinnsluminni, svo það byrjaði ekki upp á nýtt og ég gat mjúklega tekið upp hvar ég hætti. Aftur á móti, jafnvel með 8GB af minni, "skotaði" ég niður öll forrit einu sinni í viku til að hreinsa vinnsluminni, vegna þess að kerfið fór að hægja á með fullt minni. Ég á ekki í vandræðum með að hægja á iPhone, en á hinn bóginn verð ég að segja að þegar ég notast við næstum eins forrit, þvert á móti þá gerist það reglulega hjá mér að þegar ég fer aftur í áður opnað forrit, það hleðst alveg aftur og ég get ekki haldið áfram þar sem frá var horfið.
Hvaða valkostur er betri? Erfitt að segja... Að drepa forrit á Android og hreinsa vinnsluminni er spurning um tvo smelli. Að hlaða öllu forritinu aftur á iPhone er ekki svo tímafrekt, svo það skiptir ekki svo miklu máli... Auðvitað væri tilvalið að hafa meira vinnsluminni á iPhone og fjölverkavinnsla eins og á Android :-D
Shit, það er aftur heimskulegt. Fyrir það fyrsta hefur Android ekki verið gert í Java í langan tíma, til þess er Kotlin. Garbage collector sér um minnið, sem er það einfaldasta í iOS, sem er til jafnvel með ókostum sínum. Allt er það að iOS drepur forrit um leið og þú tekur þau af skjánum. Þetta losar minni alveg eins og á Linux þegar þú skrifar kill pid af ferli. Þess vegna tekur það svo langan tíma að opna vafrann og fara aftur í fyrri vinnu. Þessi grein er orðrétt þýðing á X ára gamalli grein eftir iOS ofstækismann með enga forritunarþekkingu. Já, auðvitað er minnisstjórnun aðallega á ábyrgð forritarans, hvað forritið gerir. Ef hann hóstar á því þá er minnisleki í heiminum og pqk þú getur haft X Gb af minni og það er enn ónýtt. Og á þeim tíma þegar mörg forrit eru aðeins WebView er þetta mjög einfalt, því það borðar sjálft það sem það getur. Greinin er bull, sorp.
Android notar ekki lengur jvm, heldur dvm. Og að auki setur það það síðan saman í innfæddan keyrslu
Java er enn í Android.