Ideāls RAM apjoms, kas tālruņiem nepieciešams vienmērīgai daudzuzdevumu veikšanai, ir diezgan apspriests temats. Apple tiek galā ar mazāku izmēru savos iPhone tālruņos, kas bieži vien ir vairāk lietojams nekā Android risinājumi. Jūs arī neatradīsit nekāda veida RAM atmiņas pārvaldību iPhone tālrunī, savukārt Android tam ir sava īpaša funkcija.
Ja dodaties, piemēram, Samsung Galaxy tālruņos uz Iestatījumi -> Ierīces kopšana, šeit atradīsit RAM indikatoru ar informāciju par to, cik daudz vietas ir brīvas un cik aizņemtas. Pēc noklikšķināšanas uz izvēlnes jūs varat redzēt, cik daudz atmiņas aizņem katra lietojumprogramma, kā arī šeit ir iespēja notīrīt atmiņu. Šeit atrodas arī RAM Plus funkcija. Tā nozīme ir tāda, ka tas noņems noteiktu skaitu GB no iekšējās atmiņas, ko tas izmantos virtuālajai atmiņai. Vai varat iedomāties kaut ko līdzīgu operētājsistēmā iOS?
Viedtālruņi balstās uz RAM. Tas kalpo operētājsistēmas glabāšanai, lietojumprogrammu palaišanai, kā arī dažu datu saglabāšanai kešatmiņā un buferatmiņā. Tādējādi operatīvā atmiņa ir jāorganizē un jāpārvalda tā, lai lietojumprogrammas varētu darboties nevainojami, pat ja tās nolaižat fonā un pēc kāda laika atkal atverat.
Svifta vs. Java
Bet, startējot jaunu lietojumprogrammu, atmiņā ir jābūt brīvai vietai, lai to ielādētu un palaistu. Ja tas tā nav, vieta ir jāatbrīvo. Tāpēc sistēma piespiedu kārtā pārtrauks dažus darbojošos procesus, piemēram, lietojumprogrammas, kas jau ir sākušās. Tomēr abas sistēmas, t.i., Android un iOS, ar RAM darbojas atšķirīgi.
iOS operētājsistēma ir rakstīta Swift valodā, un iPhone tālruņiem faktiski nav jāpārstrādā izmantotā atmiņa no aizvērtām lietotnēm atpakaļ sistēmā. Tas ir saistīts ar to, kā ir izveidots iOS, jo Apple to pilnībā kontrolē, jo tas darbojas tikai savos iPhone tālruņos. Turpretim Android ir rakstīts Java valodā un tiek izmantots daudzās ierīcēs, tāpēc tam jābūt universālākam. Kad lietojumprogramma tiek pārtraukta, tā aizņemtā vieta tiek atgriezta operētājsistēmā.
Vietējais kods vs. JVM
Kad izstrādātājs raksta iOS lietotni, viņš to tieši apkopo kodā, kas var darboties iPhone procesorā. Šo kodu sauc par vietējo kodu, jo tā palaišanai nav nepieciešama interpretācija vai virtuālā vide. No otras puses, Android ir atšķirīgs. Kad Java kods tiek kompilēts, tas tiek pārveidots par Java baitu kodu starpposma kodu, kas ir neatkarīgs no procesora. Tāpēc tas var darboties dažādos procesoros no dažādiem ražotājiem. Tam ir milzīgas priekšrocības starpplatformu savietojamībai.
Protams, ir arī mīnuss. Katrai operētājsistēmas un procesora kombinācijai ir nepieciešama vide, kas pazīstama kā Java virtuālā mašīna (JVM). Taču vietējais kods darbojas labāk nekā kods, kas tiek izpildīts, izmantojot JVM, tāpēc JVM izmantošana vienkārši palielina lietojumprogrammas izmantotās RAM apjomu. Tātad iOS lietotnes patērē mazāk atmiņas, vidēji par 40%. Arī tāpēc Apple nav jāaprīko savi iPhone ar tik lielu operatīvo atmiņu kā Android ierīcēm.
Es neesmu gluži eksperts, bet es aprakstīšu savu skatījumu no tāda lietotāja viedokļa, kurš ir izmantojis Android 15 gadus un tagad ir 2 mēnešus ieguvis iPhone 13 mini. Android ierīcē ar 8GB atmiņu (pēdējais Samsung S21, Flip3) parasti pēc noteikta laika atgriezos pie iepriekš palaistās lietojumprogrammas un tā joprojām bija ielādēta RAM, tāpēc viss nesākās no jauna un varēju mierīgi paņemt, kur pameta. Savukārt pat ar 8GB atmiņu reizi nedēļā "nošāvu" visas aplikācijas, lai notīrītu RAM, jo ar pilnu atmiņu sistēma sāka bremzēt. Man nav problēmu ar bremzēšanu iPhone, bet, no otras puses, jāsaka, ka, izmantojot gandrīz identiskas aplikācijas, tieši otrādi, man regulāri notiek tā, ka, atgriežoties pie iepriekš palaistās aplikācijas, tas atkal pilnībā ielādējas un es nevaru gludi turpināt no vietas, kur pārtraucu.
Kurš variants ir labāks? Grūti pateikt... Lietotņu nogalināšana operētājsistēmā Android un operatīvās atmiņas notīrīšana notiek ar diviem klikšķiem. Ielādēt visu aplikāciju vēlreiz uz iPhone nav tik laikietilpīga, tāpēc tam nav tik lielas nozīmes... Protams, ideāli būtu, ja iPhone būtu vairāk RAM un multitasking kā Android :-D
Sūds, tas atkal ir stulbi. Pirmkārt, Android jau sen nav darīts Java valodā, tas ir Kotlins. Atkritumu savācējs ir atbildīgs par atmiņu, kas ir visvienkāršākā iOS, kas pastāv pat ar saviem trūkumiem. Viss ir tāds, ka iOS nogalina lietotnes, tiklīdz tās noņemat no ekrāna. Tas atbrīvo atmiņu tāpat kā Linux, kad ierakstāt procesa kill pid. Tāpēc pārlūkprogrammas atvēršana un atgriešanās pie iepriekšējā darba prasa tik ilgu laiku. Šis raksts ir burtiski tulkots X gadus vecam rakstam, ko izveidojis iOS fanātiķis bez programmēšanas zināšanām. Jā, protams, par atmiņas pārvaldību galvenokārt atbild programmētājs, ko aplikācija dara. Ja viņš klepo, pasaulē ir atmiņas noplūde un pqk jums var būt X Gb atmiņas un tas joprojām ir bezjēdzīgs. Un laikā, kad daudzas lietojumprogrammas ir tikai WebView, tas ir ļoti vienkārši, jo tas pats ēd to, ko spēj. Raksts ir muļķības, atkritumi.
Android vairs neizmanto jvm, bet gan dvm. Turklāt tas pēc tam to apkopo vietējā izpildāmā failā
Java joprojām ir Android ierīcē.