Утсанд олон үйлдэл хийхэд шаардагдах хамгийн тохиромжтой RAM-ийн хэмжээ нь нэлээд маргаантай сэдэв юм. Apple нь iPhone-ууддаа жижиг хэмжээтэй байдаг бөгөөд энэ нь Android-ийн шийдлүүдээс илүү ашиглах боломжтой байдаг. Та мөн iPhone дээр ямар ч төрлийн RAM санах ойн менежментийг олохгүй, харин Android нь үүнд зориулагдсан өөрийн функцтэй.
Хэрэв та жишээ нь Samsung Galaxy утас руу очвол Наставени -> Төхөөрөмжийн арчилгаа, та эндээс хичнээн зай сул, хэр их зай эзэлдэг талаарх мэдээллийг агуулсан RAM-ийн үзүүлэлтийг олох болно. Цэс дээр дарсны дараа програм тус бүр хэр их санах ой авч байгааг харах боломжтой бөгөөд энд санах ойг цэвэрлэх боломжтой. RAM Plus функц нь мөн энд байрладаг. Үүний утга нь виртуал санах ойд ашиглах дотоод санах ойноос тодорхой тооны ГБ-ыг хазах болно. Та iOS дээр ийм зүйлийг төсөөлж чадах уу?
Ухаалаг гар утас нь RAM дээр тулгуурладаг. Энэ нь үйлдлийн системийг хадгалах, програмуудыг эхлүүлэх, мөн зарим өгөгдлийг кэш болон буфер санах ойд хадгалахад үйлчилдэг. Иймд RAM-г программуудыг арын дэвсгэр дээр буулгаад хэсэг хугацааны дараа дахин нээсэн ч гэсэн хэвийн ажиллах боломжтой байхаар зохион байгуулж, удирдах ёстой.
Свифт vs. Java
Гэхдээ шинэ програм эхлүүлэх үед та үүнийг ачаалж ажиллуулахын тулд санах ойд сул зайтай байх хэрэгтэй. Хэрэв тийм биш бол газрыг чөлөөлөх ёстой. Тиймээс систем нь аль хэдийн эхэлсэн програмууд гэх мэт ажиллаж байгаа зарим процессуудыг хүчээр зогсоох болно. Гэсэн хэдий ч, Android болон iOS гэх мэт хоёр систем нь RAM-тай өөр өөрөөр ажилладаг.
iOS үйлдлийн систем нь Swift дээр бичигдсэн бөгөөд iPhone-ууд хаалттай программаас ашигласан санах ойг дахин систем рүү буцаан ашиглах шаардлагагүй. Энэ нь iOS үйлдлийн системтэй холбоотой юм, учир нь Apple зөвхөн iPhone дээр ажилладаг тул үүнийг бүрэн хянах боломжтой. Үүний эсрэгээр, Android нь Java хэл дээр бичигдсэн бөгөөд олон төхөөрөмж дээр ашиглагддаг тул илүү түгээмэл байх ёстой. Аппликешн зогссоны дараа түүний авсан зай нь үйлдлийн системд буцаж ирдэг.
Төрөлх код vs. JVM
Хөгжүүлэгч iOS програм бичихдээ үүнийг iPhone-ийн процессор дээр ажиллах боломжтой код болгон шууд хөрвүүлдэг. Энэ кодыг ажиллуулахын тулд ямар ч тайлбар эсвэл виртуал орчин шаарддаггүй тул эх код гэж нэрлэдэг. Нөгөө талаар Android бол өөр юм. Java кодыг эмхэтгэх үед процессороос хамааралгүй Java Bytecode завсрын код руу хөрвүүлэгддэг. Тиймээс энэ нь өөр өөр үйлдвэрлэгчдийн өөр өөр процессор дээр ажиллах боломжтой. Энэ нь платформ хоорондын нийцтэй байдлын хувьд асар их давуу талтай.
Мэдээжийн хэрэг, бас сул тал бий. Үйлдлийн систем болон процессорын хослол бүрт Java Virtual Machine (JVM) гэж нэрлэгддэг орчин шаардлагатай. Гэхдээ эх код нь JVM-ээр дамжуулан гүйцэтгэсэн кодоос илүү сайн ажилладаг тул JVM-г ашигласнаар програмын ашигладаг RAM-ийн хэмжээг л нэмэгдүүлдэг. Тиймээс iOS програмууд бага санах ой ашигладаг, дунджаар 40%. Тийм ч учраас Apple нь iPhone утсаа Android төхөөрөмжтэй адил их хэмжээний RAM-аар тоноглох шаардлагагүй юм.
Би яг мэргэжилтэн биш ч 15 жил Android-г ашиглаад iPhone 2 mini-г 13 сарын турш ашиглаж байгаа хэрэглэгчийн байр сууринаас өөрийнхөө үзэл бодлыг тайлбарлах болно. 8 ГБ санах ойтой андроид (хамгийн сүүлд Samsung S21, Flip3) дээр би ихэвчлэн тодорхой хугацааны дараа өмнө нь эхлүүлсэн програм руу буцдаг байсан бөгөөд энэ нь RAM-д ачаалагдсан хэвээр байсан тул дахин эхлээгүй бөгөөд би хүссэн газраасаа хялбархан авах боломжтой болсон. орхисон. Нөгөөтэйгүүр, 8 ГБ санах ойтой ч гэсэн би бүх программыг долоо хоногт нэг удаа "буудсан" бөгөөд учир нь санах ой бүрэн дүүрэн үед систем удааширч эхэлсэн. Надад iPhone утсыг удаашруулах асуудал байхгүй, гэхдээ нөгөө талаас бараг ижил програмуудыг ашиглах үед, эсрэгээр, өмнө нь эхлүүлсэн програм руу буцаж ирэхэд надад байнга тохиолддог гэдгийг хэлэх хэрэгтэй. Энэ нь дахин бүрэн ачаалагдах бөгөөд би зогссон газраасаа үргэлжлүүлж чадахгүй байна.
Аль сонголт нь илүү дээр вэ? Хэлэх хэцүү... Андройд дээрх програмуудыг устгаж, RAM-г цэвэрлэх нь хоёр товшилтын асуудал юм. Аппликейшнийг бүхэлд нь iPhone дээр дахин ачаална гэдэг тийм ч их цаг хугацаа шаарддаггүй тул тийм ч чухал биш... Мэдээж iPhone дээр илүү их RAM, Android шиг олон үйлдэлтэй байвал зүгээр байх болно :-D
Новш, дахиад л тэнэг юм. Нэг зүйлийг хэлэхэд, Android нь Java хэл дээр удаан хугацаанд хийгдээгүй, энэ бол Котлин юм. Хог цуглуулагч нь санах ойг хариуцдаг бөгөөд энэ нь iOS-ийн хамгийн энгийн бөгөөд сул талуудтай ч гэсэн байдаг. Бүх зүйл бол iOS нь програмуудыг дэлгэцнээс нь салгамагц устгадаг. Энэ нь процессын kill pid гэж бичихэд linux дээрх шиг санах ойг чөлөөлдөг. Тийм ч учраас хөтчөө нээж, өмнөх ажил руугаа буцахад маш их хугацаа шаардагддаг. Энэ нийтлэл нь програмчлалын ямар ч мэдлэггүй iOS-ийн шүтэн бишрэгчийн X настай нийтлэлийг үгчлэн орчуулсан болно. Тийм ээ, мэдээж хэрэг санах ойн менежмент нь програмист юу хийдэг вэ гэдэг нь голчлон үүрэг хариуцлага юм. Хэрэв тэр ханиалгах юм бол дэлхий дээр санах ой алдагдсан бөгөөд та X Гб санах ойтой байж болно, энэ нь ашиггүй хэвээр байна. Олон тооны програмууд зөвхөн WebView байх үед энэ нь маш энгийн, учир нь тэр өөрөө чадах бүхнээ иддэг. Нийтлэл бол дэмий хоосон зүйл, хог юм.
Андройд jvm ашиглахаа больсон, харин dvm. Нэмж дурдахад, энэ нь түүнийг уугуул гүйцэтгэх файл болгон хөрвүүлдэг
Java нь Android дээр хэвээр байна.