Telefonoek beren multiataza leunetarako behar duten RAM kopuru aproposa nahiko eztabaidatua da. Apple-k bere iPhone-en tamaina txikiagoarekin lortzen du, askotan Android irtenbideak baino erabilgarriagoa dena. iPhonean ere ez duzu RAM memoria-kudeaketarik aurkituko, Android-ek horretarako bere funtzio dedikatua du.
Joan bazara, adibidez, Samsung Galaxy telefonoetan Ezarpenak -> Gailuaren zainketa, RAM adierazle bat aurkituko duzu hemen zenbat leku libre dagoen eta zenbat okupatutako informazioarekin. Menuan klik egin ondoren, aplikazio bakoitzak zenbat memoria hartzen duen ikus dezakezu, eta memoria garbitzeko aukera ere baduzu hemen. RAM Plus funtzioa ere hemen dago. Bere esanahia da barneko biltegiratzetik GB kopuru jakin bat moztuko duela, memoria birtualerako erabiliko duena. Imajinatzen al duzu horrelako zerbait iOS-en?
Smartphoneak RAM-ean oinarritzen dira. Sistema eragilea gordetzeko, aplikazioak abiarazteko eta haien datu batzuk cache eta buffer memorian gordetzeko balio du. Horrela, RAM aplikazioak ondo exekutatzeko moduan antolatu eta kudeatu behar da, nahiz eta atzeko planoan utzi eta pixka bat igaro ondoren berriro ireki.
Azkarra vs. Java
Baina aplikazio berri bat abiaraztean, memorian leku librea izan behar duzu kargatu eta exekutatzeko. Hala ez bada, lekua utzi beharko da. Beraz, sistemak indarrez amaituko ditu martxan dauden prozesu batzuk, hala nola, dagoeneko hasita dauden aplikazioak. Hala ere, bi sistemek, hau da, Androidek eta iOSek, modu ezberdinean funtzionatzen dute RAMarekin.
iOS sistema eragilea Swift-en idatzita dago, eta iPhoneek ez dute zertan erabilitako memoria birziklatu aplikazio itxietatik berriro sistemara. Hau iOS eraikitzeko moduagatik gertatzen da, Apple-k kontrol osoa baitu bere iPhoneetan bakarrik exekutatzen baita. Aitzitik, Android Javan idatzita dago eta gailu askotan erabiltzen da, beraz unibertsalagoa izan behar du. Aplikazioa amaitzen denean, hartzen zuen espazioa sistema eragilera itzultzen da.
Kode natiboa vs. JVM
Garatzaile batek iOS aplikazio bat idazten duenean, zuzenean konpilatzen du iPhonearen prozesadorean exekutatu daitekeen kodean. Kode horri jatorrizko kode deitzen zaio, ez duelako interpretaziorik edo ingurune birtualrik behar exekutatzeko. Android, berriz, ezberdina da. Java kodea konpilatzen denean, Java Bytecode bitarteko kodea bihurtzen da, prozesadoretik independentea dena. Hortaz, fabrikatzaile ezberdinetako prozesadore ezberdinetan exekutatu daiteke. Honek abantaila handiak ditu plataforma anitzeko bateragarritasunerako.
Noski, alde txarra ere badago. Sistema eragile eta prozesadore konbinazio bakoitzak Java Makina Birtuala (JVM) izenez ezagutzen den ingurune bat behar du. Baina jatorrizko kodeak JVM bidez exekutatutako kodea baino hobeto funtzionatzen du, beraz, JVM erabiltzeak aplikazioak erabiltzen duen RAM kopurua handitzen du. Beraz, iOS aplikazioek memoria gutxiago erabiltzen dute, batez beste %40. Horregatik ere Applek ez du bere iPhoneak Android gailuekin bezainbeste RAM batekin hornitu beharrik.
Ez naiz zehatz-mehatz aditua, baina nire ikuspuntua deskribatuko dut 15 urtez Android erabili duen eta orain 2 hilabete iPhone 13 mini-n sartu duen erabiltzaile baten ikuspegitik. 8GB memoria duen Android-en (azkena Samsung S21, Flip3) normalean denbora jakin baten buruan itzultzen nintzen aurretik abiarazitako aplikaziora eta oraindik RAM-n kargatuta zegoen, beraz, ez zen berriro hasi eta ondo hartu nuen lekuan. utzita. Bestalde, 8GB-ko memoria izanda ere, astean behin aplikazio guztiak "erretiratzen" nituen RAMa garbitzeko, sistema moteltzen hasi baitzen memoria beteta. Ez dut arazorik iPhonean moteltzeko, baina, bestalde, esan beharra daukat ia aplikazio berdinak erabiltzean, aitzitik, aldian-aldian gertatzen zaidala aurretik abiarazitako aplikazio batera itzultzean, guztiz kargatzen da berriro eta ezin dut leunki jarraitu utzi nuen lekuan .
Zein aukera da hobea? Zaila esatea... Android-en aplikazioak hiltzea eta RAM garbitzea bi klik egitea da. Aplikazio osoa berriro iPhonean kargatzeak ez du hainbeste denbora behar, beraz, ez du hainbeste axola... Noski, aproposa litzateke iPhonean RAM gehiago izatea eta Androiden bezala multiataza egitea :-D
Kaka, astakeria da berriro. Batetik, Android aspaldi ez da egin Javan, horretarako dago Kotlin. Zabor biltzaileak memoriaz arduratzen da, iOS-en sinpleena dena, bere desabantailekin ere existitzen dena. Gauza osoa da iOS-ek aplikazioak hiltzen dituela pantailatik kendu bezain laster. Honek memoria askatzen du linux-en bezala prozesu baten kill pid idazten duzunean. Horregatik, hainbeste denbora behar da arakatzailea ireki eta aurreko lanera itzultzeko. Artikulu hau programazio ezagutzarik ez duen iOS zale batek X urteko artikulu baten hitzezko itzulpena da. Bai, jakina, memoriaren kudeaketa programatzailearen ardura da batez ere, aplikazioak egiten duena. Eztul egiten badu, munduan memoria ihes bat dago eta pqk X Gb memoria izan dezakezu eta oraindik ez du ezertarako balio. Eta aplikazio asko WebView baino ez diren garai honetan, hau oso erraza da, berak ahal duena jaten duelako. Artikulua zentzugabekeria da, zaborra.
Android-ek jada ez du jvm erabiltzen, dvm baizik. Eta horrez gain, gero jatorrizko exekutagarri batean konpilatzen du
Java Android-en dago oraindik.