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