Ідэальны аб'ём аператыўнай памяці, неабходны тэлефонам для бесперабойнай шматзадачнасці, з'яўляецца даволі дыскусійнай тэмай. Apple абыходзіцца меншым памерам сваіх айфонаў, які часта больш зручны, чым рашэнні для 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 гадоў і цяпер 2 месяцы ў iPhone 13 mini. На Android з 8 ГБ памяці (апошні час Samsung S21, Flip3) я звычайна вяртаўся праз пэўны час да раней запушчанай праграмы, і яна ўсё яшчэ загружалася ў аператыўную памяць, таму яна не пачыналася зноўку, і я мог плаўна працягваць тое, што хацеў спынены. З іншага боку, нават з 8 Гб памяці я раз на тыдзень "збіваў" усе прыкладанні, каб ачысціць аператыўку, таму што пры поўнай памяці сістэма пачынала тармазіць. У мяне няма праблем з запаволеннем на iPhone, але з іншага боку, я павінен сказаць, што пры выкарыстанні амаль ідэнтычных прыкладанняў, наадварот, са мной рэгулярна здараецца, што калі я вяртаюся да раней запушчанага прыкладання, ён зноў загружаецца цалкам, і я не магу плаўна працягнуць там, дзе спыніўся.
Які варыянт лепш? Цяжка сказаць... Забойства праграм на Android і ачыстка аператыўнай памяці - справа двух клікаў. Паўторная загрузка ўсяго прыкладання на iPhone не патрабуе шмат часу, таму гэта не мае вялікага значэння... Вядома, ідэальна было б мець больш аператыўнай памяці на iPhone і шматзадачнасць, як на Android :-D
Бля, зноў глупства. З аднаго боку, Android даўно не рабіўся на Java, вось для чаго і патрэбен Kotlin. Зборшчык смецця адказвае за памяць, якая з'яўляецца самай простай у iOS, якая існуе нават з яе недахопамі. Уся справа ў тым, што iOS забівае праграмы, як толькі вы здымаеце іх з экрана. Гэта вызваляе памяць гэтак жа, як у Linux, калі вы ўводзіце kill pid працэсу. Таму так доўга трэба адкрыць браўзер і вярнуцца да ранейшай працы. Гэты артыкул з'яўляецца даслоўным перакладам артыкула X-гадовай даўніны фанатыка iOS без ведаў праграмавання. Так, вядома, кіраванне памяццю ў асноўным з'яўляецца абавязкам праграміста, чым займаецца праграма. Калі ён кашляе, значыць, у свеце ёсць уцечка памяці, і pqk, у вас можа быць X Гб памяці, і яна ўсё роўна бескарысная. І ў той час, калі многія прыкладанні толькі WebView, гэта вельмі проста, таму што ён сам есць, што можа. Артыкул лухта, смецце.
Android больш не выкарыстоўвае jvm, а dvm. І ў дадатак, потым кампілюе яго ў родны выкананы файл
Java па-ранейшаму ёсць у Android.