Идеальный объем оперативной памяти, необходимый телефонам для плавной многозадачности, является довольно дискуссионной темой. Apple обходится меньшими размерами своих iPhone, что зачастую более удобно в использовании, чем решения Android. На iPhone вы также не найдете никакого управления оперативной памятью, тогда как в Android для этого есть собственная специальная функция.
Если вы зайдете, например, в телефоны Samsung Galaxy в регулировка -> Уход за устройством, здесь вы найдете индикатор оперативной памяти с информацией о том, сколько места свободно и сколько занято. Нажав на меню, вы увидите, сколько памяти занимает каждое приложение, а также здесь у вас есть возможность очистить память. Здесь же расположена функция RAM Plus. Смысл его в том, что он откусит от внутреннего хранилища определенное количество ГБ, которое будет использовать под виртуальную память. Можете ли вы представить себе что-то подобное на iOS?
Смартфоны полагаются на оперативную память. Он служит им для хранения операционной системы, запуска приложений, а также для хранения некоторых их данных в кэш-памяти и буферной памяти. Таким образом, оперативная память должна быть организована и управляться таким образом, чтобы приложения могли работать бесперебойно, даже если вы отбросите их в фоновый режим и через некоторое время снова откроете.
Свифт против. Джава
Но при запуске нового приложения вам необходимо иметь свободное место в памяти для его загрузки и запуска. Если это не так, то место необходимо освободить. Поэтому система принудительно завершит некоторые запущенные процессы, например уже запущенные приложения. Однако обе системы, то есть 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. На андроиде с 8гб памяти (последние Samsung S21, Flip3) я обычно через определенное время возвращался к ранее запущенному приложению и оно все равно было загружено в оперативку, поэтому все сначала не начиналось и я мог плавно подхватывать там, где я остановился. С другой стороны, даже имея 8гб памяти, я раз в неделю "сбивал" все приложения, чтобы очистить оперативную память, потому что при полной памяти система начинала тормозить. У меня нет проблем с подтормаживаниями на iPhone, но с другой стороны, должен сказать, что при использовании практически одинаковых приложений у меня, наоборот, регулярно случается, что при возврате к ранее запущенному приложению, он снова загружается полностью, и я не могу плавно продолжить с того места, на котором остановился.
Какой вариант лучше? Трудно сказать… Убить приложения на андроиде и очистить оперативную память — дело двух кликов. Загрузка всего приложения заново на iPhone занимает не так много времени, поэтому это не имеет большого значения... Конечно, идеально было бы иметь на iPhone больше оперативной памяти и многозадачность, как на Android :-D
Блин, это опять глупо. Во-первых, Android уже давно не делается на Java, для этого и нужен Kotlin. За память отвечает сборщик мусора, который является самым простым в iOS, который существует даже при своих недостатках. Все дело в том, что iOS убивает приложения, как только вы убираете их с экрана. Это освобождает память так же, как в Linux, когда вы вводите kill pid процесса. Именно поэтому открытие браузера и возврат к предыдущей работе занимает так много времени. Эта статья представляет собой дословный перевод статьи X-летней давности фанатика iOS без знаний программирования. Да, конечно, управление памятью — это в основном обязанность программиста, то, что делает приложение. Если он на это кашляет, то в мире есть утечка памяти и pqk у вас может быть Х Гб памяти и это все равно бесполезно. А в то время, когда многие приложения — это только WebView, это очень просто, потому что оно само ест то, что может. Статья бред, фигня.
Android больше не использует jvm, а dvm. И кроме того, он затем компилирует его в собственный исполняемый файл.
Java все еще находится в Android.