Android кто ест память

Память Android заполнена, хотя там ничего нет — что делать?

С проблемой переполненной памяти сталкиваются многие владельцы устройств на платформе Android.

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

Но сначала ремарка для начинающих пользователей. Самые большие объемы памяти, как правило, занимают видеоролики. Рекомендуем зайти в «Галерею» и проверить смартфон на предмет ненужных материалов. Невостребованные ролики, скачанные фильмы, обрезки видео — все это скапливается в файловой системе и занимает память. Удалите ненужные видеоролики, фотографии и другие данные, загруженные с WhatsApp или других приложениях и мессенджеров. Они сохраняются в отдельную папку, расположенную в DCIM.

Очистка кэша телефона

Первым делом, нужно почистить кэш на Android-смартфоне. Существует несколько способов чистки. Начнем с базовых настроек:

  1. Откройте настройки смартфона.
  2. Зайдите в раздел «Память» или «Хранилище».
  3. Выберите раздел «Данные кэша» и нажмите кнопку «Удалить кэш».
  4. Далее нажмите «ОК» для полной очистки.

Также кэш-память на Android чистится через специальные приложения (которые в последнее время сильно испортились). Вот способ очистки на примере утилиты CCleaner (программа доступна в Google Play). После ее установки выполните следующий алгоритм действий:

  1. Зайдите в приложение, выберите опцию «Очистка кэша и памяти» и нажмите на кнопку «Анализ».
  2. После завершения сканирования системы отметьте галочкой опцию «Кэш» и выберите «Очистить».
  3. Кэш, временные файлы и прочий мусор автоматически удаляются с телефона.

Если остались вопросы, обязательно изучите более подробную статью об очистке кэша. Отметим, что один из самых действенных методов очистки кэш-памяти — раздел Wipe cache partition в меню Recovery.

Очистка ненужных файлов

Большие объемы нежелательных данных чаще всего скапливаются в папках загрузки или мессенджеров, а также в скрытой директиве .thumbnails. Рекомендуем провести тщательный анализ файловой системы. Для этой операции подойдет анализотор дисков DiskUsage, который также загружается из Google Play.

После установки зайдите в программу и выбреете опцию «Карта памяти». Тут собраны все данные, которые есть на устройстве. Выберите ненужный файл и удалите его. Для этого зайдите в меню в верхнем углу экрана и нажмите кнопку «Удалить».

DiskUsage подходит для «поштучного» удаления файлов и анализа дискового пространства, но приложение неудобно для массового очищения системы. Также здесь не получится просмотреть медиафайлы — для этого рекомендуется использовать какой-нибудь проводник или диспетчер задач.

Удаления файлов из скрытой папки .thumbnails

Директива .thumbnails находится в папке DCIM — в галерее, где хранятся фотографии и видеоролики. В .thumbnails сохраняются эскизы медиафайлов, чтобы в дальнейшем смартфон мог быстрее подгружать плитки-миниатюры. Со временем накапливается несколько гигабайт эскизов, особенно если владелец устройства любитель делать снимки или снимать видео.

Например, на одном из смартфонов редакции хранится 500 фотографий. Размер папки с миниатюрами .thumbnails составляет 1 ГБ. Это пространство можно легко освободить.

Так как директива .thumbnails по умолчанию скрыта, через галерею зайти в нее не получится. Для диагностики и удаления эскизов рекомендуется скачать приложение Total Comander. Далее нужно выполнить следующие действия:

  1. Зайдите в установленное приложение Total Comander и найдите там папку .thumbnails (она находится в папке DCIM).
  2. Под перечнем сохраненных миниатюр в левом нижнем углу экрана есть кнопка «Выделить» — нажмите ее.
  3. Затем нажмите на крестик внизу панели, чтобы удалить существующие эскизы.

Единственный недостаток в такой операции — теперь миниатюры будут подгружаться чуть медленнее. После очистки папки .thumbnails устройство снова начнет создавать новые эскизы. Чтобы это предотвратить, потребуется блокировка создание эскизов.

Как заблокировать создание эскизов?

Чтобы не удалять содержание папки .thumbnails постоянно, выполните следующие действия:

  • Удалите папку .thumbnails и подключите смартфон к ПК.
  • На компьютере создайте пустой текстовый файл и укажите для него имя .thumbnails (убедитесь, что название папки прописано точно).
  • Далее этот файл переносится на телефон в папку DCIM.

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

Карта памяти

Логичным и самым простым решением проблем с нехваткой памяти является покупка карты памяти (если в смартфоне есть соответствующий разъем). При установке microSD на некоторых устройствах потребуется ее активация, потому что по умолчанию телефон так и продолжит сохранять файлы во внутреннею память. Зайдите в раздел «Память/Хранилище» и поставьте маркер возле опции «Карта памяти».

Еще важно правильно выбрать карту памяти — учесть класс и скорость, а также другие характеристики. Чтобы не возникло накладок, внимательно изучите наши статьи.

Нужно отметить, что в смартфонах на свежих версиях Android есть возможность объединения внутреннее хранилище с картой памяти. В таких случаях смартфон сам предложит произвести соединение после установки карты.

Читайте также:  Опера не устанавливается андроид

Сброс настроек

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

Для возвращения смартфона к заводским настройкам выполните следующие действия:

  1. Зайдите в настройки и выберите опцию «Восстановление и сброс».
  2. Здесь могут быть два варианта: сброс без потери данных и сброс совместно с полным форматированием накопителя. Выберите второй вариант.
  3. Далее нажмите «Сбросить настройки» и ждите завершения процедуры.

Итоги

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

Источник

Как на Android проверить расход оперативной памяти

У современных Android-смартфонов уже давно нет проблем с оперативной памятью. Постепенно стало нормой, чтобы аппарат имел 8 и даже 12 ГБ. В принципе, бывает и больше, но даже самые отъявленные гики пока не представляют, куда можно применить такой большой объём ОЗУ. Всё-таки для стабильной работы устройству редко требуется больше 5-6 ГБ, а то, что остаётся, — остаётся просто про запас на случай, если в каком-то приложении произойдёт сбой и оно начнёт расходовать оперативку как не в себя. Но как узнать, куда уходит оперативная память, если в Android нет штатного инструмента проверки её потребления?

Заметили перерасход оперативной памяти? Возьмите и проверьте, куда она уходит

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

Как включить меню разработчика на Android

Чтобы получить доступ к инструменту для контроля расхода оперативной памяти, вам сначала потребуется получить права разработчика и открыть соответствующий раздел настроек.

  • Для этого перейдите в «Настройки» и откройте пункт «О телефоне»;
  • В открывшемся окне найдите строку «Номер сборки»;

Получить права разработчика проще, чем кажется

  • Быстро нажимайте на неё 5-10 раз до тех пор, пока на экране не появится надпись «Вы стали разработчиком»;
  • Подтвердите получение статуса разработчика вводом пароля доступа.

С этого момента в меню «Настроек» вы увидите новый раздел «Для разработчиков». Как правило, он располагается в самом низу, рядом с разделами «Обновление ПО» и «О телефоне». Однако некоторые производители намеренно убирают этот пункт из видимой части и внедряют его в качестве подпункта в какую-то вкладку. Поэтому, если вы не можете найти раздел «Для разработчиков», воспользуйтесь поиском, который встроен в приложение «Настройки». Это самый верный способ отыскать искомый пункт меню.

Какие приложения расходуют оперативную память

А теперь перейдём к инструменту контроля расхода оперативки. Чтобы получить к нему доступ, потребуется проделать следующие шаги:

  • Перейдите в меню «Для разработчиков»;

В меню разработчика скрыт инструмент слежения за расходом оперативной памяти

  • Пролистайте вниз до раздела «Работающие приложения»;
  • Здесь вы увидите сводку о расходе памяти системой и установленным софтом.

Однако, если вы посмотрите на список процессов, которые используют ОЗУ, вы не увидите ни одного приложения. А всё потому, что здесь фигурирует только системный софт, отключение которого может быть чревато сбоями и ухудшением работы операционной системы. Поэтому нам надо переключиться на раздел, в котором указывается расход сторонних приложений. Для этого нужно нажать на иконку шестерёнки в правом верхнем углу. Это действие перенесёт вас на такую же страницу, но уже со списком всех запущенных сторонних приложений, использующих оперативку.

Слева — расход ОЗУ системным софтом, справа — сторонним

Скорее всего, все приложения, кроме «Настроек», будут обозначены как «Кэшированный фоновый процесс». Это значит, что приложение хоть и расходует ресурс, но находится в фоновом режиме и не активничает в данный момент. Нормальный расход памяти для среднестатистического приложения – 100-300 МБ. Тяжёлые игры могут потреблять и 1, и даже 2 ГБ. Таким образом, кстати, очень легко вычислить приложения-шпионы, рекламные вирусы и им подобную шелуху, которая не засыпает, а продолжает прокручивать рекламу или вести сбор данных о пользователе.

Если вы увидели, что какое-то приложение потребляет слишком много ресурсов, его можно остановить или удалить. Софт, которому вы доверяете, можно просто перезагрузить или попробовать установить обновление. В конце концов, разработчики могут и ошибиться при написании кода. А вот если приложение, которое расходует 500-700 МБ или больше, вам незнакомо, его лучше сначала остановить, а потом удалить, чтобы сберечь ресурс смартфона и обеспечить ему более плавное функционирование без сбоев и случайных вылетов запущенных в фоне приложений.

Источник

Приложения, которые съедают память в телефоне

Мой телефон — чистое наказание. В нем то и дело загадочным образом исчезает память. Сначала я сетовала на большое количество установленных приложений.

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

5 причин, приводящих к отсутствию памяти в телефоне

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

  1. Очень много Мбайтов забирает браузер. В нем хранится история просмотров, картинки, закладки, пароли.
  2. Социальные сети отнимают огромный кусок памяти. Просматриваемый контент загружается в память телефона.
  3. Сервисы Гугла сжирают целые Гбайты. Удалить их из смартфона невозможно. Много памяти отнимает Ютуб, поиск, музыка, игры, Google Play и прочие приложения. Катострофическое количество Мбайт забирает GetApps — удалить этот сервис невозможно.
  4. Галерея. Удаленные фото, видео, ссылки, скачанные файлы перемещаются в корзину, которая находится в общих настройках галереи.
  5. Мессенджеры. Если в Ватсап настройки выставлены неправильно, память тает на глазах.
Читайте также:  Сбербанк вход по отпечатку пальца android как сделать

Как очистить память телефона

Я использую следующие способы для устранения проблемы:

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

Источник

Большие требования к памяти в 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 после загрузки документа.
  • Делаем дамп кучи в разные моменты времени исполнения вашего приложения и проверяем, как используется память. Ищем большие объекты, которые хранятся в памяти и не подпадают под сборку мусора. Дампы кучи также помогают выявить утечки памяти – например, можно поискать в дампе кучи ваши активности и посмотреть, были ли собраны их старые экземпляры.

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

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

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

Читайте также:  Busybox android 11 magisk

Особенно легко спровоцировать утечки памяти, работая со сложными жизненными циклами активностей или фрагментов 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() представления. В таком случае быстро создается много объектов, и может начаться сборка мусора, которая может негативно повлиять на работу этого представления. Как указывалось выше, всегда нужно отслеживать использование памяти, чтобы избегать таких ситуаций.

Источник

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