- Выделить память для android
- Лучшие приложения для увеличения свободной памяти телефона
- Amazon Photos — хранилище фотографий от Amazon
- Avast Cleanup — очиститель телефона от Avast
- CCleaner — приложение для очистки телефона и ПК
- Duplicates Cleaner — удаление дубликатов
- Google Фото — лучше приложения для фото на Android
- Remo Duplicate Photo Remover — простое приложение
- Resilio Sync — локальное облако для фотографий
- Большие требования к памяти в Android – что делать?
- Для начала немного теории
- Анализ памяти кучи
- Утечки памяти
- Высвобождайте память в ответ на события
- Большая куча
- Проверка, сколько памяти сможет использовать ваше приложение
- Используйте оптимизированные структуры данных
- Предотвращайте перемешивание памяти
Выделить память для android
Извините, но пока этот способ только для XPERIA, подробности здесь
Этот способ только для рутованных телефонов (как получить root смотрим в соответствующей своему девайсу теме) с прошивкой на борту версии ниже 2.2 (в которых перенос приложений на флешку не реализован в системе) работает так же на Custom 2.2
Преимущества:
- Неограниченное место под приложения (1,4 Гб можно назвать неограниченным)
- Нормальная работа всех программ (в том числе и программы из рода резервного копирования — они не теряют работоспособности)
- После установки приложений не требуется перезагрузка устройства вообще, по сравнению со скриптами (ниже)
Недостатки:
- Телефон без флешки не включится (циклоребут) если включится, то приложений не будет.
Особенности:
- Кеш Dalvik остается в памяти телефона
- Быстродействие не ухудшается
Скрипты-аналоги:
- App 2 SD
- Link 2 SD
что для этого нужно:
- Root Explorer должен стоять в /system/app (чтобы не было проблем)
- Не должно быть установленных приложений (их можно из /data/app временно перенести в какую-нибудь папку на флешке)
- Обязательно перенесите свой рабочий стол (только если Вы ставили сторонний) в папку /system/app
- Программа Mini Tool Partition Wizard Home Edition | с форума:
pwhe7.exe ( 10.57 МБ )
За испорченные девайсы никто кроме Вас ответственности не несёт! хотя почти всегда всё поправимоСообщение отредактировал ArviZ — 02.12.11, 13:04
Источник
Лучшие приложения для увеличения свободной памяти телефона
Для многих смартфоны стали сочетанием отличной камеры и хранилища для мемов. Особенно, если установлена автоматическая загрузка изображений их мессенджеров. В этом случае из больших чатов весь хлам летит в хранилище и моментально его забивает, сколько бы памяти не было в телефоне. Не удивительно, что в таком случае дубликатов становится слишком много и с ними надо как-то бороться. Я лично помогал паре друзей чистить их телефоны и это освобождало около 10 ГБ памяти. Все это можно делать руками, но это не всегда просто. Для решения задачи созданы неплохие приложения для оптимизации хранилища. Они не только удаляют дубликаты, но и имеют много сопутствующих функций, включая облачные хранилища и системы очистки кэша. Вот лучшие из них для Android.
Только за счет удаления лишних фотографий можно освободить несколько гигабайт хранилища.
Amazon Photos — хранилище фотографий от Amazon
Amazon Photos — в первую очередь является приложением для резервного хранения фотографий и уже потом выполняет остальные полезные функции. Многие этого сразу не знали и поэтому раскритиковали приложения в отзывах Google Play. Просто имейте это ввиду.
Хранить фотографии можно бесплатно, но если вы хотите загрузить на сервер еще и видео, то это потребует дополнительной оплаты. Система будет хранить и систематизировать фотографии. Вы сможете удалять их с телефона, но они останутся в облаке. А заодно вы получите некоторые другие полезные функции. Но если вы хотите пользоваться всеми возможностями — придется платить. При этом, ценник высоковат для его функциональности.
Avast Cleanup — очиститель телефона от Avast
Avast Cleanup — это базовое приложение, которое может очистить вашу коллекцию фотографий. Он сканирует устройство и показывает, что вы можете удалить, чтобы освободить место.
Таких приложений много, но Avast идет немного дальше и предлагает для удаления не просто дубликаты, но и просто похожие фото. То есть, если вы несколько раз нажали на кнопку съемки, то получите много одинаковых фотографий. Из-за неполного соответствия всех данных, включая EXIF, другие приложения не скажут, что это дубликаты, а Avast с большой долей вероятности сделает это.
Приложение довольно агрессивно работает с оперативной памятью. Но в целом для такого инструмента оно довольно неплохое и может пригодиться, если вам надо почистить память телефона от большого количества лишних фото.
CCleaner — приложение для очистки телефона и ПК
CCleaner — популярное приложение для очистки на ПК, но и мобильная версия тоже работает неплохо. Оно очень похоже на Avast Cleanup и работает почти так же, но свои особенности все же есть.
Приложение сканирует ваше хранилище, находит ваши фотографии и позволяет удалять лишнее. Есть функция удаления дубликатов фотографий, чтобы немного очистить вашу коллекцию. Приложение довольно простое и в некотором роде даже примитивное, поэтому у некоторых оно может работать не так, как задумано.
В CCleaner также есть некоторые дополнительные функции, такие как очистка оперативки, которыми лучше не пользоваться. Но для основной задачи — очистки галлереи — оно вполне подходит.
Duplicates Cleaner — удаление дубликатов
Duplicates Cleaner тоже заслуженно входит в список лучших приложений для очистки дубликатов фотографий. Оно работает не только с фотографиями или изображениями, но и с другими типами файлов. Например, такими как аудиофайлы, документы и даже видеофайлы.
Это отличный способ немного очистить ваш смартфон от вороха ненужных файлов. Однако Duplicates Cleaner работает только с файлами, которые на самом деле являются дубликатами. То есть, оно не может определить фотографии который выглядят одинаково. Они должны полностью соответствовать друг другу по названию, размеру файла, дате создания и другим параметрам. Если вы хотите вычистить и похоже фотографии,, а не только одинаковые, то лучше выбирайте что-то другое.
Зато в остальном Duplicates Cleaner работает довольно сносно и серьезных нареканий к нему нет. Оно может освободить довольно много места, если вы сохраняете все подряд и часто задваиваете картинки.
Google Фото — лучше приложения для фото на Android
Google Фото — это золотой стандарт для резервного копирования фотографий. Оно загружает вашу коллекцию в вашу учетную запись Google Drive, позволяя вам удалять изображения со своего телефона.
Кроме того, оно также архивирует материалы, чтобы сэкономить место в облачном хранилище. А еще дает понять, какие старые и ненужные изображения можно удалить, чтобы не тянуть их с собой изо дня в день. Например, такие, как старые скриншоты.
Обидно то, что раньше все это работало совершенно бесплатно, но теперь Google надоело делать это за ”спасибо” (хотя, и его часто не допросишься). Фишку с загрузкой безлимитного количества фотографий в высоком качестве отменили и теперь придется платить за хранение любых материалов. Бесплатный объем составляет всего 15 ГБ. Но увеличение объема не такое дорогое, чтобы сильно расстраиваться по этому поводу.
Remo Duplicate Photo Remover — простое приложение
Remo Duplicate Photos Remover позволяет пользователям идентифицировать и удалять одинаковые фотографии из их библиотеки. В целом ничего нового, но приложение можно назвать, наверное, самым простым из остальных.
Remo Duplicate Photo Remover
Remo Duplicate Photos Remover сканирует ваше устройство на наличие файлов изображений и определяет дубликаты. Вы удаляете дубликаты и продолжаете жить своей жизнью. Есть функция обнаружения схожих фотографий. Таким образом, если у вас есть 9 селфи, сделанных в один день, но вы хотите оставить только одно, это поможет вам найти и удалить остальные восемь. Иногда случаются ошибки и приложение предлагает удалить не то, что нужно или не предлагает то, что нужно, но большой проблемой это назвать сложно. В целом все работает.
Resilio Sync — локальное облако для фотографий
Resilio Sync — это приложение для автономного облачного хранилища. Вы устанавливаете его на свой компьютер, а затем на свой телефон. После этого вы сможете перемещать фотографии с телефон на компьютер, как в облако.
Это отличный способ выгрузить фотографии (и другие файлы), чтобы вы могли удалить их со своего телефона. Файлы доступны в любое время через приложение. Бесплатная версия немного ограничена. Если вам нужная полная функциональность, заплатить придется довольно дорого, но это не подписка, а разовый платеж.
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
WhatsApp — одно из лучших приложений для обмена сообщениями, и оно, наконец, получает ту возможность, которую мы все от него ждали. Мессенджером теперь можно будет пользоваться на разных устройствах и не привязываться только к телефону. Эта функция уже доступна для бета-пользователей на Android и iOS, и она позволяет одновременно входить в систему на четырех устройствах. Это большой шаг для платформы. Можно даже сказать, что это новый виток развития. Вот только все равно есть некоторые ограничения. Сейчас расскажу, как пользоваться WhatsApp на разных устройствах, а самое главное, что придется для этого учитывать.
Думаю, что каждый пользователь хоть один раз в своей жизни сталкивался со случайным списанием средств, когда покупал что-то в интернете. Вроде бы вот-вот только привязал карту к магазину, как тут же пропадает крупная сумма денег. Причины бывают разные: ребенок случайно взял телефон, бездумно тапнули по какой-либо кнопке, лишь бы закрыть надоедливое уведомление, — все что угодно. Однако задумывались ли вы когда-нибудь, что некоторые продавцы специально списывают наши деньги? Как оказалось, и такое случается.
Все пользуются стикерами. Они такие интересные, разнообразные и зачастую даже многословные. С их помощью можно не просто обозначить настроение сообщений, но и заменить ими отдельные слова и даже целые предложения, выразив своё отношение к сказанному собеседником. Другое дело, что не всегда понятно, что означает тот или иной стикер. Ведь если с эмодзи или смайликами всё понятно, то зачастую создатели стикеров вкладывают в них далеко не тот смысл, который распознаём мы. К счастью, ВКонтакте появились необходимые пояснения. Рассказываю, где их найти.
Источник
Большие требования к памяти в 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 этой программы. Можно (и следует) интегрировать ее уже сегодня, тем более, что это не сложно!
Особенно легко спровоцировать утечки памяти, работая со сложными жизненными циклами активностей или фрагментов 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() представления. В таком случае быстро создается много объектов, и может начаться сборка мусора, которая может негативно повлиять на работу этого представления. Как указывалось выше, всегда нужно отслеживать использование памяти, чтобы избегать таких ситуаций.
Источник