Ідеальний обсяг оперативної пам’яті, який потрібен телефонам для безперебійної багатозадачності, є досить обговорюваною темою. Apple обходиться меншими розмірами своїх iPhone, які часто зручніші, ніж рішення для Android. Ви також не знайдете жодного виду керування пам’яттю RAM на iPhone, тоді як Android має власну спеціальну функцію для цього.
Якщо ви зайдете, наприклад, у телефонах Samsung Galaxy Налаштування -> Догляд за пристроєм, тут ви знайдете індикатор оперативної пам’яті з інформацією про те, скільки вільного місця та скільки зайнято. Натиснувши меню, ви можете побачити, скільки пам’яті займає кожна програма, а також у вас є можливість очистити пам’ять тут. Тут же знаходиться функція RAM Plus. Його сенс полягає в тому, що він відкушує певну кількість ГБ внутрішнього сховища, яке буде використовувати для віртуальної пам'яті. Чи можете ви уявити щось подібне на iOS?
Смартфони покладаються на оперативну пам’ять. Він служить їм для зберігання операційної системи, запуску програм, а також для зберігання деяких їхніх даних у кеші та буферній пам’яті. Таким чином, оперативна пам’ять має бути організована та керована таким чином, щоб програми могли працювати безперебійно, навіть якщо ви відпустите їх у фоновий режим і знову відкриєте через деякий час.
Свіфт vs. 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.