Максимальный объем для андроида

Гид покупателя. Как правильно выбрать объем памяти в смартфоне

Как понять, какой объем памяти вам нужен в смартфоне? Сам вопрос кажется детским и несерьезным, ведь ответ настолько простой и лежит на поверхности. Но за этой простотой скрываются подводные камни, о которых почти никто не размышляет. Толчком к этому материалу послужило несколько событий. В командировке общался с владельцами и управляющими сотовых магазинов, в разговоре всплыл момент, что именно выбор объема памяти для многих покупателей становится камнем преткновения и на это уходит много времени. Для магазинов это означает необходимость как минимум предлагать два варианта одного и того же смартфона, с базовым объемом памяти и с расширенным.

Другой разговор был с подругой, она покупала маме телефон в подарок, спрашивала совет. Порекомендовал Galaxy A51 в базовой версии, но она решила приобрести модель на 128 ГБ, чтобы «памяти хватило на ближайшие годы». Наконец, разговор с другом, который выбирал между iPhone 12 Pro Max на 128 или 256 ГБ. Тема периодически возникает, и, значит, самое время поделиться некоторыми соображениями об этом.

Сколько памяти в вашем смартфоне, карты памяти

Цена ошибки при выборе той или иной версии Android-смартфона не так велика, так как вы всегда можете использовать карты памяти, большинство устройств их поддерживает. Даже промахнувшись изначально, вы частично можете исправить свою ошибку. Но тут нужно понимать, что далеко не все приложения позволяют сохранять все файлы на карту памяти, не всегда это положительно сказывается на скорости работы, поэтому и тут стоит проявить внимание. В некоторых флагманах на Android поддержки карт памяти нет, также как и в iPhone, поэтому правильный выбор тут становится еще важнее. Правда, для Android-смартфонов, как правило, памяти установлено столько, что хватит вам за глаза, и никаких изъянов вы замечать не будете.

Память в смартфоне нужна не только для того, чтобы вы могли в ней хранить приложения, фотографии, музыку и другой контент, но и для работы самой системы. Изначально операционная система занимает какой-то объем памяти вашего аппарата, поэтому, покупая смартфон с 128 ГБ памяти, вы не можете рассчитывать на то, что вся она будет свободна.

Ни в Android, ни в iOS нельзя занять всю память телефона, так как это приведет к замедлению работы, некоторые функции и вовсе не будут работать. Универсальное правило таково, что идеальными являются 6-8 ГБ свободной памяти, это позволит избежать любых проблем. Забивать память под завязку вредно, так как вы получите кучу проблем и точно не будете довольны своим аппаратом. Большая часть тех, кто жалуется на медленный Android, как правило, поступают именно так – выгребают всю память без остатка и не понимают, что они делают неверно.

На мой взгляд, для того, чтобы понять, сколько памяти вам нужно, необходимо вначале оценить, что вы делаете на смартфоне, сколько памяти у вас есть сегодня. Заходите в соответствующий раздел и смотрите, какой объем у вас занят. Если вашему аппарату 1-3 года, а объем свободной памяти около половины, то вы, скорее всего, «легкий» пользователь, в основном звоните, переписываетесь в мессенджерах, изредка фотографируете. Используя смартфон как телефон и средство общения, вы не загружаете память приложениями, как следствие, для вас выбор максимально прост – тот же объем памяти или больший вследствие того, что даже в базовых моделях объем встроенной памяти постоянно растет. Еще пару лет назад флагманы имели 64 ГБ памяти, сегодня это 128 ГБ (iPhone 12 – единственное исключение).

Но давайте посмотрим на обычного человека, который не отличается тягой к потреблению контента, просмотру фильмов на телефоне, но изредка фотографирует, записывает видео. Как ни странно, под это описание отлично подпадает мама моей подруги. Она звонит, общается в мессенджерах, что-то смотрит в сети или на YouTube. Женщина в возрасте, но с большим удовольствием фотографирует на память семейные праздники, прогулки и также снимает видео со значимых событий. У нее потребление памяти не выглядит линейным, она не заполняется чем-то ежедневно. Случился день рождения, и часть памяти отъели фотографии и видео. Процесс постепенный, не очень быстрый. Но тут важно понимать, что она не готова удалять фотографии и видео семьи, для нее это ценность. А другого контента нет. Как вариант, дети могут помочь загрузить все фотографии и видео в облако, но в последующем это не будет бесплатным (тот же Google Photo с июня 2021 года будет брать за это деньги, и это первая ласточка).

Хорошо, если вы окажетесь рядом, когда память телефона окажется заполненной, а если нет? Удаленно объяснить, как почистить память и что можно удалить, всегда проблематично. Поэтому стоит взять за правило смотреть, что происходит на таком аппарате, и заботиться о том, чтобы память не заканчивалась (в том числе, возможно, перенося файлы на карту памяти или добавив ее).

По моему мнению, в 2021 году стоит ориентироваться на объем памяти в 64 ГБ и держать в голове использование карты памяти в последующем для таких пользователей, это выглядит рациональным подходом. Карту памяти при этом вы можете установить фактически любого объема (ставить стоит 128 ГБ и выше, тут выбор за вами, но для пожилых людей ориентируйтесь на производителя и его качество, скорость карты не играет роли). Давайте условно назовем таких пользователей нашими бабушками, это люди от 60 и старше. Для них такой объем памяти в большинстве случаев будет достаточным.

Читайте также:  Plants vs zombies 2 вылетает при запуске android

Среднестатистический пользователь смартфона в 2021 году

Мы все уникальны, и слово «обычный» не может охарактеризовать человека, но смартфон при этом предмет универсальный. Большинство пользователей смартфонов используют их возможности от силы на треть, а то и меньше. Хотя на словах выходит так, что каждый выжимает из своего устройства максимум возможного, требует максимальной производительности, времени работы – ведь за это заплачены деньги. Но если отбросить собственные зачастую ошибочные представления о себе, то картина получится довольно простой. Большинство людей постоянно используют чуть более десятка приложений, хранят свои файлы на телефоне (фото, видео, иногда фильмы и сериалы).

Давайте попробуем представить, что вы изредка записываете видео. И тут все упирается в то, какое качество для этого вы выбираете. Например, одна минута видео в разрешении 4К занимает примерно 350-400 МБ (кодек H.264, при использовании HEVC почти в два раза меньше). Для того же iPhone это максимальное разрешение, а значит, три минуты записи дадут вам 1 ГБ места в памяти. С таким разрешением максимальное время записи видео составит около трех часов для модели на 64 ГБ. Не очень много, не так ли? Поэтому любой человек, который хотя бы несколько раз в год записывает видео или подозревает, что может это сделать, должен думать о моделях с объемом памяти в 128 ГБ и выше (как вариант, с поддержкой карт памяти).

Фотографии занимают не так много памяти, например, у меня на Z Fold2 около 4000 снимков за несколько месяцев, они заняли почти 18 ГБ места.

Уверен, что большая часть людей не фотографируют так много, как это происходит в моем случае. Посмотрите, сколько фото у вас в галерее, сколько они занимают места, за какой срок вы их сделали. И выводы можно будет сделать самостоятельно.

Разобравшись с фото и видео, нужно остановиться на музыке и фильмах, подкасты отнесем также к музыке. Тут все довольно просто, если вы смотрите на телефоне фильмы и сериалы, то рассчитывайте, что один сезон, состоящий из 8-10 серий, займет 5-8 ГБ месте в хорошем качестве. В голове также стоит держать такую редкость в наши дни, как поездка в отпуск, обычно люди закачивают сериалы на несколько недель вперед (15-20 ГБ на это улетают на ура). Музыка в обычном качестве (про несжатые форматы ничего не говорю, это отдельная история) займет у вас пару гигабайт, а если захотите сохранить всю свою коллекцию, то закладывайте 5-6 ГБ места. Но зачем это делать, если у вас есть стриминг? Стоит хранить только то, что вы слушаете более-менее постоянно.

Мой опыт таков, что в 2021-2022 году большинству людей за глаза хватит 128 ГБ встроенной памяти в смартфоне, это достаточный объем. Большинство флагманов обладают именно таким объемом памяти. Интересно, что в 2020 году продажи iPhone 11 были показательны тем, какой объем памяти выбирали покупатели, напомню, для этой модели это 64, 128 и 256 ГБ. С перевесом 3 к 1 продавался iPhone 11 128 ГБ, то есть люди осознанно выбирали больший объем памяти и платили за него. Нечто подобное происходит и на рынке Android-смартфонов стоимостью от 30 тысяч рублей и выше, люди выбирают объем памяти в 128 ГБ.

Тем, кто любит играть в тяжелые игры, стоит смотреть на 128 ГБ и выше, но с одной оговоркой – если таких игр много. Постепенно требования по памяти растут, и через пару лет дистрибутив игры может весить 20-30 ГБ, покупая на вырост устройство, нужно об этом помнить. С другой стороны, обычно те, кто играет, приобретают флагманы, где вопрос памяти уже решен в пользу максимального объема.

Для рынка в 2021 году золотой серединой становится объем встроенной памяти в 128 ГБ. Тем, кто знает, что много записывает видео, ставит приложения с большим объемом данных (картография к ним больше не относится), стоит смотреть на аппараты с большим размером памяти. На рынке уже были аппараты на 1 ТБ, но особым спросом они не пользовались. Более того, исследования показали, что такой объем излишен, занятой остается от силы треть этого объема, и только единицы умудряются забить память под завязку своими фотографиями и видео (не чем-то иным).

То, что на Android можно ставить карты памяти, в том числе быстрые и большого объема, дает вам свободу выбора. Но для тех, кто ищет действительно большие объемы памяти, является продвинутым пользователем, можно посоветовать SSD-диски, которые напрямую можно подключить к смартфону. У меня такие SSD на 2 ТБ, храню на них архивы с телефонов. При этом недостатка в памяти самих смартфонов не испытываю, у меня всегда достаточно места.

Какие выводы можно сделать из этого материала? Первое и основное: выбор объема памяти всегда за вами, вам нужно оценить, как вы пользуетесь смартфоном, сколько памяти занято сегодня. И не забывать, что все новые возможности, например, 4K/8K-видео, требуют другого объема памяти. То же самое про новые приложения, их размер постепенно растет, учитывая рост памяти в мобильных устройствах.

Думаю, что экономить на памяти не стоит. Если есть возможность, то покупайте сегодня объем в 128 ГБ, он доступен для большинства современных моделей. Но если не хотите совсем экономить, то берите 256 ГБ (как вариант, 512 ГБ, но этот объем избыточен практически для всех).

Расскажите в комментариях, сколько памяти в вашем устройстве (основной и карты памяти), сколько ему лет и какой объем занят. А главное, какой объем памяти вам нужен в вашем следующем устройстве. Спасибо.

Источник

Максимальный размер приложения в Android Market увеличен до 4 ГБ

Раньше некоторые приложения приходилось разбивать на две части — основная часть размером не более 50 МБ выкладывалась на Android Market, а дополнительные файлы, при необходимости, скачивались с вашего сервера после установки приложения. Теперь можно сэкономить на хостинге. В Android Market разрешённый размер приложения увеличен с 50 МБ до 4 ГБ. Туда поместится всё, что угодно — любая графика и видеоролики.

Читайте также:  Dolby atmos android 11 poco x3 pro

Максимальный размер .apk сохраняется прежним 50 МБ, но к нему теперь можно присоединять до двух файлов расширения (APK Expansion Files) размером по 2 ГБ каждый, они хостятся на серверах Google в бинарных блобах и имеют стандартное расширение .obb, хотя это могут быть файлы любого формата — MP4, ZIP, PDF и т.д.

Перед скачиванием пользователи увидят общий размер приложения, включая файлы .apk и .obb.

Файлы .obb именуются в соответствии с названием самого пакета и размещаются в указанных местах на сервере и на пользовательском устройстве.

Увеличив разрешённый размер приложения до четырёх гигабайт, Google выполнил обещание, озвученное в мае 2011 года на конференции I/O.

На самом деле большинство приложений в Android Market гораздо меньше 50 МБ, редко встречаются даже программы в 20 МБ. Другое дело — игры, для которых чем больше размер файла — тем лучше, теперь можно включать в пакет различные видеоролики между уровнями, красочные заставки и всё остальное.

Почему-то приходит в голову, что в 4 ГБ влезет несколько сезонов какого-нибудь «Доктора Хауса». Теоретически, правообладатели могут даже продавать фильмы через Android Market под видом приложений, почему нет?

Источник

Google отменила давно устаревшее ограничение Android. 4 ГБ больше не предел при съёмке видео

Первая бета-версия Android 11 уже позволяет, но большинство приложений пока не перестроились

Компания Google, наконец, отменила давно устаревшее ограничение в операционной системе Android на размер файла в 4 ГБ при съёмке видео. Поддержка файлов большего размера уже доступна в первой бета-версии Android 11.

До того, как смартфоны научились снимать ролики в разрешении 4K, пользователям было сложно представить, что размер отснятых видеороликов дорастёт до 4 ГБ. Однако с тех пор многое изменилось. При съёмке видео 4K на скорости 30 кадров в секунду пройдёт меньше 15 минут, прежде чем файл достигнет рубежа в 4 ГБ. А ведь сейчас никого не удивишь режимами 4K 60 к/с и 8K к/с на смартфонах.

Жалобы на ограничение начали появляться в 2015 году. И с тех пор разработчики регулярно поднимали этот вопрос с Google.

64-разрядные файловые системы вполне могут справляться с файлами размером до 16 ТБ. Однако API со времён 32-разрядной Android всё ещё ограничивает разработчиков 4 ГБ, вынуждая разбивать ролик на несколько файлов.

Это безобразие должно прекратиться с выходом Android 11. В Android 11 Beta 1 поддержка файлов свыше 4 ГБ уже реализована. Однако приложения для съёмки ещё не успели перестроиться под новые возможности.

Даже в фирменном приложении Google Camera сохранилось ограничение на 4 ГБ. Но есть и исключения, например, Open Camera на Android 11 позволяет снимать ролики без устаревшего ограничения, тогда как в том же приложении на Android 10 такой возможности нет.

Источник

Большие требования к памяти в Android – что делать?

Здравствуйте, уважаемые читатели.

Сегодня предлагаем вашему вниманию небольшой материал о грамотном использовании памяти в Android.

Приятного чтения!

Эта статья посвящена базовым приемам управления использованием памяти в приложениях – например, в браузерах, фоторедакторах и программах для просмотра PDF – в которых предъявляются большие запросы к памяти.

Для начала немного теории

Большинство приложений для Android работают поверх среды исполнения (ART), заменившей ныне устаревающую виртуальную машину Dalvik. ART и Dalvik похожи на виртуальную машину Java (JVM), с которой их роднят схожие принципы проектирования. Они используют для хранения данных приложений два отдельных пространства: стек и кучу.

Стек-память в Java используется для хранения локальных переменных (примитивных типов и ссылок на объекты). Каждый поток Java имеет собственный отдельный стек. Стек-память относительно невелика по сравнению с памятью кучи. Размер стека Java в Dalvik обычно составляет 32 KB для кода Java и 1 MB для нативного кода (C++/JNI). В ART появился унифицированный стек для Java и C++, размер которого составляет около 1 MB.

Когда приложение выбирает всю стек-память до предела, выдается ошибка StackOverflowError . Наиболее вероятные причины, по которым может быть достигнут предел стека – либо бесконечная рекурсия, либо чрезмерно глубокий вызов метода. Ссылки на стек-память всегда делаются в очередности LIFO (последним пришел – первым обслужен). Всякий раз при вызове метода в стек проталкивается новый фрейм с локальными переменными этого метода. Когда метод завершит работу, его фрейм выталкивается из стека, и любое возможное результирующее значение отправляется обратно в стек. Итак, первая проблема (бесконечная рекурсия) – это баг, который легко исправить, но вторая требует некоторого рефакторинга, заключающегося в разворачивании рекурсивных вызовов метода и преобразования их в цикл.

Память кучи в Java используется виртуальной машиной для выделения объектов. Когда бы ни создавался объект, это происходит в куче. Виртуальные машины, например, JVM или ART, выполняют регулярную сборку мусора, убирают все объекты, на которые больше не осталось ссылок, и таким образом высвобождают память для выделения новых объектов.
Для обеспечения удобства использования Android жестко ограничивает размеры кучи для каждого работающего приложения. Предельный размер кучи варьируется от устройства к устройству и зависит от того, сколько RAM на этом устройстве. Если ваше приложение достигает предельного размера кучи и пытается выделить еще памяти, то выдается ошибка OutOfMemoryError , и приложение завершается. Давайте рассмотрим некоторые примеры, помогающие избежать такой ситуации.

Анализ памяти кучи

Самый важный инструмент, позволяющий разобраться с проблемами памяти в ваших приложениях и понять, как используется память – это профилировщик памяти, доступный в Android Studio.

Этот инструмент визуализирует, сколько памяти потребляет ваше приложение с течением времени. Можно делать мгновенные снимки кучи Java в работающем приложении, записывать операции выделения памяти и следить за кучей или этой хронологией выделений памяти в мощном UI.

Типичный сеанс работы с профилировщиком памяти должен выглядеть так:

  • Отсматриваем наиболее частые выделения памяти и проходы сборщика мусора для выявления возможных проблем с производительностью.
  • Отсматриваем, как использовалась память с течением времени, в особенности такие операции, на которые, как известно, требуется выделять много памяти. Убедитесь, что после завершения этих операций использование памяти снижается. Например, ниже показано, как воздействует на память активность PdfActivity из PSPDFKit после загрузки документа.
  • Делаем дамп кучи в разные моменты времени исполнения вашего приложения и проверяем, как используется память. Ищем большие объекты, которые хранятся в памяти и не подпадают под сборку мусора. Дампы кучи также помогают выявить утечки памяти – например, можно поискать в дампе кучи ваши активности и посмотреть, были ли собраны их старые экземпляры.
Читайте также:  Java сервер для android

Утечки памяти

Современные сборщики мусора – это сложные произведения технологического искусства, результат многолетних исследований и разработок, в которых участвовали сотни людей, от академиков до разработчиков-профессионалов. Однако до сих пор приходится быть начеку, чтобы не допускать утечек в памяти.

Образцовое решение для выявления утечек в памяти – библиотека LeakCanary. Она автоматически выдает уведомления, когда в вашей тестовой сборке (development build), выдавая вам стектрейс утечки в UI этой программы. Можно (и следует) интегрировать ее уже сегодня, тем более, что это не сложно!

Особенно легко спровоцировать утечки памяти, работая со сложными жизненными циклами активностей или фрагментов Android. Такое часто случается в тех точках, где разработчики удерживают сильные ссылки на контексты UI или другие UI-специфичные объекты в фоновой задаче или в статических переменных. Один из способов спровоцировать такие задержки – активно покрутить устройство, когда тестируете ваше приложение.

Высвобождайте память в ответ на события

Android может затребовать у приложения выделенную память или просто принудительно завершить его, когда память необходимо высвободить для выполнения более критичных задач. Прежде, чем это произойдет, система позволит вам отдать всю память, которая вам не нужна. В вашей активности понадобится реализовать интерфейс ComponentCallbacks2 . В таком случае, всякий раз, когда ваша система будет испытывать дефицит памяти, поступит вызов к вашему методу onTrimMemory() , и вы сможете высвободить память или отключить те возможности, которые не будут работать в таких условиях дефицита памяти.

Так, подобные обратные вызовы обрабатываются в приложении PSPDFKit. Приложение PSPDFKit проектировалось с расчетом активного использования памяти для кэширования, чтобы работа с приложением шла как можно более гладко. Исходно неизвестно, сколько памяти доступно на устройстве, поэтому PSPDFKit адаптируется к ситуации и ограничивает использование памяти, когда получает уведомления о том, что памяти недостаточно. Поэтому приложения, интегрированные с PSPDFKit, работают даже на низкотехнологичных устройствах, но со сниженной производительностью из-за того, что кэширование отключено.

Большая куча

Одно из лобовых решений, позволяющих справиться с высокими требованиями к памяти – запросить большую кучу Dalvik для вашего приложения. Для этого можно добавить android:largeHeap=»true» к тегу в файле AndroidManifest.xml .

Если для свойства largeHeap задано значение true , Android будет создавать все процессы для вашего приложения с большой кучей. Эта настройка предназначена только для тех приложений, которые по природе своей без нее работать не смогут, то есть, они используют объемные ресурсы, которые должны одновременно умещаться в памяти.

Настоятельно не рекомендуется использовать большую кучу, если тем самым вы хотите только поднять потолок возможного использования памяти. Использование памяти всегда нужно оптимизировать, поскольку даже большой кучи вашему приложению может не хватить при работе на слабом устройстве с небольшой памятью.

Проверка, сколько памяти сможет использовать ваше приложение

Никогда не помешает проверить, насколько велика куча вашего приложения и динамически адаптировать ваш код и доступные возможности под эти пределы памяти. Можно прямо во время исполнения проверить максимальный размер кучи при помощи методов getMemoryClass() или getLargeMemoryClass() (когда включена большая куча).

Android поддерживает даже такие устройства, на которых всего 512 MB RAM. Убедитесь, что не обошли вниманием и низкотехнологичные устройства! При помощи метода isLowRamDevice() можно проверить, не запущено ли ваше приложение на таком устройстве, где мало доступной памяти. Точное поведение этого метода зависит от устройства, но обычно он возвращает true на тех устройствах, где меньше 1 GB RAM. Нужно убедиться, что ваше приложение корректно работает и на этих устройствах, и на них отключать все возможности, использующие большой объем памяти.

Подробнее о том, как Android работает на устройствах с малым объемом памяти, можно почитать здесь; здесь же даются дополнительные советы по оптимизации.

Используйте оптимизированные структуры данных

Во многих случаях приложения используют слишком много памяти по той простой причине, что для них используются не самые подходящие структуры данных.

Коллекции Java не могут хранить эффективные примитивные типы и требуют упаковки их ключей и значений. Например, HashMap с целочисленными ключами следует заменять оптимизированным SparseArray . В конечном итоге, вместо коллекций всегда можно использовать сырые массивы, и это отличная идея, если ваша коллекция не поддается изменению размера.

К другим структурам данных, неэффективным с точки зрения использования памяти, относятся различные сериализации. Да, действительно, форматы XML или JSON удобны в использовании, можно сократить использование памяти, если работать с более эффективным двоичным форматом, например, буферами протоколов.

Все эти примеры с упоминанием структур данных, оптимизированных для экономии памяти – просто подсказки. Как и в случае с рефакторингом, нужно сначала найти источник проблем, а затем переходить к таким оптимизациям производительности.

Предотвращайте перемешивание памяти

Виртуальные машины Java/Android выделяют объекты очень быстро. Сборка мусора также идет весьма быстро. Однако при выделении большого количества объектов за короткий промежуток времени можно столкнуться с проблемой под названием «перемешивание памяти» (memory churn). В таком случае виртуальная машина не будет успевать выделять объекты в таком темпе, а сборщик мусора – их утилизировать, и приложение начнет притормаживать, а в экстремальных случаях даже израсходует всю память.

Основная проблема на территории Android в данном случае такова, что мы не контролируем, когда будет происходить сборка мусора. Потенциально это может приводить к проблемам: например, сборщик мусора работает именно в то время, пока на экране разворачивается анимация, и мы превышаем порог в 16 мс, обеспечивающий гладкое отображение кадров. Поэтому важно предотвращать чрезмерно активное выделение памяти в коде.

Пример ситуации, приводящей к перемешиванию памяти – выделение больших объектов, например, Paint внутри метода onDraw() представления. В таком случае быстро создается много объектов, и может начаться сборка мусора, которая может негативно повлиять на работу этого представления. Как указывалось выше, всегда нужно отслеживать использование памяти, чтобы избегать таких ситуаций.

Источник

Оцените статью