Телефондарға біркелкі көп тапсырманы орындау үшін қажетті жедел жадтың тамаша мөлшері - бұл өте талқыланатын тақырып. Apple өз iPhone құрылғыларында Android шешімдеріне қарағанда жиі қолдануға болатын кішірек өлшеммен жұмыс істейді. Сондай-ақ, сіз iPhone-да жедел жадты басқарудың кез келген түрін таба алмайсыз, ал Android-де бұл үшін арнайы функция бар.
Мысалы, Samsung Galaxy телефондарына барсаңыз Наставени -> Құрылғы күтімі, сіз мұнда қанша орын бос және қанша орын алатыны туралы ақпарат бар ЖЖҚ көрсеткішін таба аласыз. Мәзірді басқаннан кейін әр қолданбаның қанша жад алатынын көруге болады, сонымен қатар осы жерде жадты тазалау мүмкіндігі бар. RAM Plus функциясы да осында орналасқан. Оның мағынасы - ол виртуалды жад үшін пайдаланатын ішкі жадтан белгілі бір ГБ санын шағып алады. Сіз iOS жүйесінде осындай нәрсені елестете аласыз ба?
Смартфондар жедел жадқа сүйенеді. Ол оларға операциялық жүйені сақтауға, қолданбаларды іске қосуға, сондай-ақ олардың кейбір деректерін кэште және буфер жадында сақтауға қызмет етеді. Осылайша, жедел жад қолданбаларды фондық режимге түсіріп, біраз уақыттан кейін қайта ашсаңыз да, біркелкі жұмыс істей алатындай етіп ұйымдастырылуы және басқарылуы керек.
Свифтке қарсы Java
Бірақ жаңа қолданбаны іске қосқан кезде оны жүктеу және іске қосу үшін жадта бос орын болуы керек. Егер олай болмаса, орынды босату керек. Сондықтан жүйе іске қосылған қолданбалар сияқты кейбір іске қосылған процестерді мәжбүрлеп тоқтатады. Дегенмен, екі жүйе де, яғни Android және iOS, жедел жадпен басқаша жұмыс істейді.
iOS операциялық жүйесі Swift тілінде жазылған және iPhone телефондары жабық қолданбалардан пайдаланылған жадты жүйеге қайта өңдеудің қажеті жоқ. Бұл iOS жүйесінің жасалу жолына байланысты, өйткені Apple оны толығымен басқарады, өйткені ол тек iPhone телефондарында жұмыс істейді. Керісінше, Android Java тілінде жазылған және көптеген құрылғыларда қолданылады, сондықтан ол әмбебап болуы керек. Қолданба тоқтатылған кезде ол алған кеңістік операциялық жүйеге қайтарылады.
Жергілікті кодқа қарсы JVM
Әзірлеуші iOS қолданбасын жазғанда, оны тікелей iPhone процессорында жұмыс істей алатын кодқа құрастырады. Бұл код жергілікті код деп аталады, себебі ол іске қосу үшін ешқандай интерпретацияны немесе виртуалды ортаны қажет етпейді. Android, керісінше, басқаша. Java коды құрастырылғанда, ол процессорға тәуелсіз Java Bytecode аралық кодына түрлендіріледі. Сондықтан ол әртүрлі өндірушілердің әртүрлі процессорларында жұмыс істей алады. Бұл кросс-платформалық үйлесімділік үшін үлкен артықшылықтарға ие.
Әрине, кемшілігі де бар. Әрбір операциялық жүйе мен процессор комбинациясы Java виртуалды машинасы (JVM) деп аталатын ортаны қажет етеді. Бірақ жергілікті код JVM арқылы орындалатын кодқа қарағанда жақсырақ жұмыс істейді, сондықтан JVM пайдалану қолданба пайдаланатын ЖЖҚ көлемін жай ғана арттырады. Сондықтан iOS қолданбалары жадты аз пайдаланады, орташа есеппен 40%. Сол себепті Apple өз iPhone телефондарын Android құрылғыларындағыдай көп жедел жадпен жабдықтаудың қажеті жоқ.
Мен нақты сарапшы емеспін, бірақ мен Android жүйесін 15 жыл бойы пайдаланған және қазір iPhone 2 mini-ге 13 ай болған пайдаланушының көзқарасы бойынша өз көзқарасымды сипаттаймын. 8 ГБ жады бар андроид жүйесінде (соңғы уақытта Samsung S21, Flip3) мен әдетте белгілі бір уақыттан кейін бұрын іске қосылған қолданбаға оралдым және ол әлі де ЖЖҚ-ға жүктелді, сондықтан ол қайтадан басынан басталмады және мен қажетті жерден оңай қол жеткізе алдым. қалдырды. Екінші жағынан, жады 8 ГБ болса да, ЖЖҚ-ны тазарту үшін аптасына бір рет барлық қолданбаларды «атып тастадым», өйткені жүйе толық жадымен баяулай бастады. Менде iPhone-да баяулау проблемасы жоқ, бірақ екінші жағынан, мен бірдей дерлік қолданбаларды пайдаланған кезде, керісінше, мен бұрын іске қосылған қолданбаға оралған кезде жиі кездесетінін айтуым керек. ол толығымен қайта жүктеледі және мен тоқтаған жерден бірқалыпты жалғастыра алмаймын.
Қай нұсқа жақсырақ? Айтуға қиын… Android жүйесіндегі қолданбаларды жою және жедел жадты тазалау екі рет басу арқылы жүзеге асады. Бүкіл қолданбаны iPhone-ға қайта жүктеу соншалықты көп уақытты қажет етпейді, сондықтан ол соншалықты маңызды емес ... Әрине, iPhone-да көбірек жедел жады және Android-дегідей көп тапсырманы орындау өте жақсы болар еді :-D
Ақымақ, бұл тағы да ақымақтық. Біріншіден, Android ұзақ уақыт бойы Java-да жасалмады, бұл Котлин үшін. Қоқыс жинаушы жадты басқарады, ол iOS-тағы ең қарапайым, тіпті кемшіліктерімен де бар. Барлығы iOS қолданбаларды экраннан алып тастаған бойда оларды жояды. Бұл процестің kill pid сөзін терген кезде Linux жүйесіндегі сияқты жадты босатады. Сондықтан браузерді ашып, алдыңғы жұмысқа оралу үшін көп уақыт кетеді. Бұл мақала бағдарламалау туралы білімі жоқ iOS фанатисінің Х жастағы мақаласының сөзбе-сөз аудармасы. Иә, әрине, жадты басқару негізінен бағдарламашыға жүктеледі, қолданба не істейді. Егер ол жөтелсе, әлемде жадтың ағып кетуі бар және сізде X Гб жады болуы мүмкін және ол әлі де пайдасыз. Көптеген қосымшалар тек WebView болатын уақытта бұл өте қарапайым, өйткені ол өзі қолынан келгенін жейді. Мақала бос сөз, қоқыс.
Android енді jvm емес, dvm пайдаланады. Сонымен қатар, ол оны жергілікті орындалатын файлға құрастырады
Java әлі де Android жүйесінде.