65 МБ кажется чрезвычайно большим объемом памяти для приложения, которое отображает на экране только «Hello World». Чтобы было ясно, все, что я сделал, это создал пустой проект активности по умолчанию в Android Studio и построил его — я ничего не добавлял и не изменял в проекте. Это нормально? Я использую Android Studio Electric Eel 2022.1.1 Patch 2.
Я говорю об использовании оперативной памяти в профилировщике, а не о размере APK.
Оба не одинаковы, но связаны. Приложение, имеющее в своем APK много классов, которые загружаются во время выполнения, конечно, имеет больший объем оперативной памяти.
Когда я создаю проект «Пустая активность» (мин. SDK 30) и запускаю его на Android 12 (отладочная сборка), использование ОЗУ составляет 76 МБ. Щелчок по диаграмме показывает, что очень большие части составляют код размером 23 МБ, а 22 МБ — для графики. Если приложение находится в фоновом режиме, размер уменьшается до 4 МБ. КСТАТИ. Пожалуйста, проверьте созданный APK, он занимает около 16 МБ и содержит поддержку Android, библиотеки androidx и kotlin.
Спасибо за подтверждение высокого использования памяти в новых проектах. APK для моей сборки весит всего 2,8 МБ, так что это не объясняет большого использования памяти.
После множества исследований и других подтверждений того, что недавно созданный проект Android Studio использует много памяти, я пришел к выводу, что это просто нормально для Android, и что Android и Java просто очень неэффективны с точки зрения использования памяти для небольших приложений. Очевидно, Android загружает множество библиотек и запускает несколько потоков, потребляющих много памяти, даже если ваше приложение почти ничего не делает.
Некоторое использование памяти в 65 МБ было вызвано тем, что я использовал отладочную сборку, но при переключении на выпускную сборку по-прежнему используется почти 45 МБ, тогда как приложение «Hello World» на iOS использует только 2 МБ.
Некоторые люди утверждали, что часть этой памяти была предварительно выделена для использования моей программой, но я обнаружил, что если я загрузил библиотеку, которая, как я ожидал, будет использовать около 40 МБ, то общее использование увеличилось с 65 МБ до более 100 МБ. Таким образом, идея о том, что он предварительно выделяет память для моей программы, кажется, не имеет места.
Лучший общий ответ, который я нашел на этот вопрос, находится здесь: https://stackoverflow.com/a/17403555/408877
Проект не такой уж и пустой, как вам кажется. В проектах по умолчанию используются библиотеки совместимости с androidx, которые позволяют разрабатывать приложения без необходимости вручную рассматривать все различные версии Android. Таким образом, ваше приложение содержит толстый слой совместимости, который также можно увидеть в размере APK более 1 МБ.