Telefonlarning ko'p vazifali ishlashi uchun zarur bo'lgan ideal operativ xotira miqdori juda muhokama qilinadigan mavzu. Apple o'zining iPhone-larining kichik o'lchamlari bilan ishlaydi, bu ko'pincha Android echimlariga qaraganda ko'proq foydalanishga imkon beradi. Shuningdek, siz iPhone-da RAM xotirasini boshqarishning har qanday turini topa olmaysiz, Android esa buning uchun o'ziga xos xususiyatga ega.
Agar siz, masalan, Samsung Galaxy telefonlariga borsangiz Nastaveni -> Qurilmani parvarish qilish, siz bu yerda qancha bo'sh joy va qancha joy egallaganligi haqida ma'lumot bilan RAM ko'rsatkichini topasiz. Menyuni bosgandan so'ng, siz har bir dastur qancha xotirani egallashini ko'rishingiz mumkin, shuningdek, bu erda xotirani tozalash imkoniyati mavjud. RAM Plus funksiyasi ham shu yerda joylashgan. Uning ma'nosi shundaki, u virtual xotira uchun foydalanadigan ichki xotiradan ma'lum miqdordagi GBni tishlaydi. iOS-da shunga o'xshash narsani tasavvur qila olasizmi?
Smartfonlar RAMga tayanadi. U ularga operatsion tizimni saqlash, ilovalarni ishga tushirish, shuningdek, ularning ayrim ma'lumotlarini kesh va bufer xotirasida saqlash uchun xizmat qiladi. Shunday qilib, operativ xotira shunday tartibga solinishi va boshqarilishi kerakki, ilovalar muammosiz ishlashi mumkin, hatto ularni fonga tashlab, birozdan keyin yana ochsangiz ham.
Swift vs. Java
Ammo yangi dasturni ishga tushirganda, uni yuklash va ishga tushirish uchun xotirada bo'sh joy bo'lishi kerak. Agar bunday bo'lmasa, joyni bo'shatish kerak. Shunday qilib, tizim allaqachon ishga tushirilgan ilovalar kabi ba'zi ishlaydigan jarayonlarni majburan to'xtatadi. Biroq, ikkala tizim, ya'ni Android va iOS ham RAM bilan boshqacha ishlaydi.
iOS operatsion tizimi Swift-da yozilgan va iPhone-lar aslida yopiq ilovalardan foydalanilgan xotirani tizimga qayta ishlashlari shart emas. Bu iOS-ning yaratilgan usuli bilan bog'liq, chunki Apple uni to'liq nazorat qiladi, chunki u faqat iPhone-larda ishlaydi. Bundan farqli o'laroq, Android Java-da yozilgan va ko'plab qurilmalarda qo'llaniladi, shuning uchun u universalroq bo'lishi kerak. Ilova tugatilgandan so'ng, u egallagan joy operatsion tizimga qaytariladi.
Mahalliy kod va boshqalar. JVM
Ishlab chiquvchi iOS ilovasini yozganda, uni to‘g‘ridan-to‘g‘ri iPhone protsessorida ishlashi mumkin bo‘lgan kodga kompilyatsiya qiladi. Ushbu kod mahalliy kod deb ataladi, chunki u ishlash uchun hech qanday talqin yoki virtual muhitni talab qilmaydi. Boshqa tomondan, Android boshqacha. Java kodi kompilyatsiya qilinganda, u protsessorga bog'liq bo'lmagan Java Bytecode oraliq kodiga aylantiriladi. Shuning uchun u turli ishlab chiqaruvchilarning turli protsessorlarida ishlashi mumkin. Bu platformalararo muvofiqlik uchun katta afzalliklarga ega.
Albatta, salbiy tomoni ham bor. Har bir operatsion tizim va protsessor kombinatsiyasi Java Virtual Machine (JVM) deb nomlanuvchi muhitga muhtoj. Ammo mahalliy kod JVM orqali bajarilgan koddan yaxshiroq ishlaydi, shuning uchun JVM dan foydalanish dastur tomonidan ishlatiladigan RAM miqdorini oshiradi. Shunday qilib, iOS ilovalari kamroq xotira ishlatadi, o'rtacha 40%. Shu sababli ham Apple o'z iPhone'larini Android qurilmalaridagi kabi ko'proq operativ xotira bilan jihozlashi shart emas.
Men aniq mutaxassis emasman, lekin men o'z nuqtai nazarimni 15 yil davomida android ishlatgan va endi iPhone 2 mini-ga 13 oy bo'lgan foydalanuvchi nuqtai nazaridan tasvirlab beraman. 8 Gb xotiraga ega androidda (so'nggi paytlarda Samsung S21, Flip3) men odatda ma'lum vaqtdan keyin avval ishga tushirilgan dasturga qaytdim va u hali ham RAMga yuklangan edi, shuning uchun u qaytadan boshlanmadi va men qayerda bo'lsam, muammosiz qabul qila oldim. qoldi. Boshqa tomondan, hatto 8 Gb xotira bilan ham, men RAMni tozalash uchun haftada bir marta barcha ilovalarni "o'qqa tutdim", chunki tizim to'liq xotira bilan sekinlasha boshladi. Menda iPhone-da sekinlashuv bilan bog'liq muammo yo'q, lekin boshqa tomondan shuni aytishim kerakki, deyarli bir xil ilovalardan foydalanganda, aksincha, men bilan muntazam ravishda sodir bo'ladi, men ilgari ishga tushirilgan dasturga qaytganimda, u yana to'liq yuklanadi va men to'xtagan joydan muammosiz davom eta olmayapman.
Qaysi variant yaxshiroq? Aytish qiyin… Android-dagi ilovalarni o'chirish va RAMni tozalash ikki marta bosish masalasidir. Butun ilovani iPhone’ga qayta yuklash unchalik ko‘p vaqt talab qilmaydi, shuning uchun unchalik muhim emas... Albatta, iPhone’da ko‘proq operativ xotira va Android’dagi kabi ko‘p vazifali bo‘lsa ideal bo‘lardi :-D
Jin, bu yana ahmoqlik. Birinchidan, Android uzoq vaqtdan beri Java-da amalga oshirilmagan, bu Kotlin uchun. Xotira uchun axlat yig'uvchi mas'ul bo'lib, u iOS-da eng oddiy bo'lib, hatto kamchiliklari bilan ham mavjud. Hammasi shundaki, iOS ilovalarni ekrandan olib tashlashingiz bilanoq o'ldiradi. Bu jarayonning kill pid kodini kiritganingizda xuddi Linuxda bo'lgani kabi xotirani bo'shatadi. Shuning uchun brauzerni ochish va oldingi ishga qaytish uchun juda ko'p vaqt ketadi. Ushbu maqola dasturlash bilimiga ega bo'lmagan iOS fanatining X yoshli maqolasining so'zma-so'z tarjimasidir. Ha, albatta, xotirani boshqarish asosan dasturchining zimmasida, dastur nima qiladi. Agar u yo'talsa, dunyoda xotira oqishi bor va pqk siz X Gb xotiraga ega bo'lishingiz mumkin va u hali ham foydasiz. Va ko'pgina ilovalar faqat WebView bo'lgan bir paytda, bu juda oddiy, chunki uning o'zi qo'lidan kelganini eydi. Maqola bema'nilik, axlat.
Android endi jvm dan emas, balki dvm dan foydalanadi. Bundan tashqari, u keyin uni mahalliy bajariladigan faylga kompilyatsiya qiladi
Java hali ham Android-da.