Недостаточно места в iPhone: пути решения
Если вы не обладатель iPhone с топовым объемом памяти, то вы можете столкнуться с проблемой нехватки места на устройстве. Чаще с этим сталкиваются пользователи, чья внутренняя память не превышает 64 Гб. Самое интересное в том, что в большинстве случаев iPhone сообщит, что большую часть памяти задействует некое таинственное «Другое». Что за другое? Как его очистить? Об этом iOS не расскажет, но зато расскажем мы.
Apple гласит, что в состав «Другого» входят различные системные настройки, кеш, аудиокниги, рингтоны, фильмы, сериалы, книги – в общем все файлы, которые вы загружаете на iPhone, а также некоторые другие.
Есть несколько рекомендаций, которые помогут освободить пространство.
Сгружать неиспользуемые приложения
Это интересная функция, которая позволяет удалить приложения из системы. Но не совсем. После того, как вы сгрузили приложение, вы не потеряете используемые в нем данные, но освободите место на накопителе. При этом на рабочем столе останется иконка приложения, но уже серого цвета. Тапнув по ней, iPhone быстро загрузит приложение снова.
Рекомендуется сгружать приложения, которые вы не используете или используете крайне редко. Это можно сделать, открыв «Настройки» — «Основные» — «Хранилище iPhone», и выбрав пункт «Сгружать неиспользуемые».
Удаление музыки
Приложения, предоставляющие потоковое прослушивание музыки и подкастов, а также скачивание музыки для прослушивания офлайн тоже ведут к засорению системы. Удаление таких файлов тоже приведет к освобождению места.
Очистка кэша
Временные файлы – продукт работы любого приложения без исключений. Они могут занимать много памяти и, несмотря на название, оставаться в системе навсегда. Очистка кэша позволит удалить эти файлы. Самыми крупными распространителями временных файлов являются сервисы, которые требуют подключения к сети интернет и осуществляют синхронизацию. Это могут быть YouTube, Google Карты, облачные хранилища и многие другие.
Старые чаты
К категории «Другое» относятся также фото и видео, которые вы получаете и пересылаете в переписке со своими близкими при помощи iMessage. Если у вас ненужные переписки iMessage, то смело удаляйте их и освобождайте дополнительные мега, а может и гигабайты.
Safari
Встроенный браузер от Apple несет ряд полезных и удобных функций для серфинга, но, как и любой другой браузер, хранит много информации. Это история, cookie и прочие данные. Едва ли много, но какую-то часть места при помощи чистки кеша Safari вам удастся выиграть. Это можно сделать, открыв «Настройки» — «Safari», но также удалит и ваши закладки, вкладки и вообще все, что сохранено у вас в браузере.
Фотографии
Безусловно, это один из самых емких разделов системы. Чтобы его освободить потребуется удалить множество фото и видео, которые наверняка дороги душе и сердцу.
В таком случае на помощь придет облачное хранилище. Если вы используете платные подписки iCloud или других сервисов, то просто выгрузите туда галерею и спокойно освобождайте память устройства. Некоторые сервисы периодически проводят акции, например, Облако Mail.ru несколько лет назад на постоянной основе бесплатно раздавало 1 Тб пространства каждому пользователю – возможно, вы стали участником подобного аукциона невиданной щедрости у какого-либо из облачных сервисов.
Если же нет, а платить за облако у вас нет возможности или желания, то очевидным будет установка приложения «Яндекс.Диск». При загрузке фото и видео со смартфона при помощи приложения, Яндекс дает пользователю неограниченное облачное хранилище.
После выгрузки галереи можно смело ее очистить, а просмотры устраивать непосредственно в облаке.
Крайние меры
Самым верным способом будет сброс iPhone к заводским установкам. Это точно освободит всю систему, но при этом вы потеряете абсолютно все данные на устройстве, и гаджет придется настраивать по новой. Прибегнуть к такому методу или нет – решать вам.
Ошибка нехватки памяти: память кучи Java в Android Studio
Как исправить java. lang.OutOfMemoryError: пространство кучи Java
при компиляции моего проекта Android?
Я получаю это после обновления до версии 1 Android Studio. Но я не думаю, что это проблема. Скорее всего, когда я начну обновлять свое приложение до SDK 21 (до этого был SDK 20). Но я тоже не был так уверен.
Я поискал в гугле какое-то исправление, но не смог найти работающее. Большинство исправлений относится к Eclipse IDE.
Это полная ошибка logcat, которую я получаю при компиляции:
предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.unzip.Unzip$1), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс.предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.unzip.Unzip$2), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.util.ArchiveMaintainer$1), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.util.ArchiveMaintainer$2), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.zip.ZipEngine$1), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла . class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. НЕОЖИДАННАЯ ОШИБКА ВЕРХНЕГО УРОВНЯ: java.lang.OutOfMemoryError: пространство кучи Java на com.android.dx.rop.code.RegisterSpec$ForComparison.toRegisterSpec(RegisterSpec.java:642) на com.android.dx.rop.code.RegisterSpec.intern(RegisterSpec.java:73) на com.android.dx.rop.code.RegisterSpec.make(RegisterSpec.java:90) на com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:323) на com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612) в com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:412) на com.android.dx.cf.code.Simulator.simulate(Simulator.java:94) в com.android.dx.cf.code.Ropper. processBlock(Ropper.java:787) на com.android.dx.cf.code.Ropper.doit(Ropper.java:742) на com.android.dx.cf.code.Ropper.convert(Ropper.java:349) на com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:280) на com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137) на com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93) в com.android.dx.command.dexer.Main.processClass(Main.java:729) в com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) на com.android.dx.command.dexer.Main.access$300(Main.java:82) в com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602) на com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) на com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) в com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) на com.android.dx.command.dexer.Main.processOne(Main.java:632) в com.android. dx.command.dexer.Main.processAllFiles(Main.java:505) на com.android.dx.command.dexer.Main.runMultiDex(Main.java:332) на com.android.dx.command.dexer.Main.run(Main.java:243) на com.android.dx.command.dexer.Main.main(Main.java:214) на com.android.dx.command.Main.main(Main.java:106) НЕУСПЕШНЫЙ ОШИБКА: сборка не удалась с исключением. * Что пошло не так: Не удалось выполнить задачу ':app:dexDebug'. > com.android.ide.common.internal.LoggedErrorException: не удалось выполнить команду: C:\Users\sdfasd\android-sdks\build-tools\21.1.1\dx.bat --dex --no-optimize --multi-dex --main-dex-list C:\Users\asdfasdf\workspace \Baucar\app\build\intermediates\multi-dex\debug\maindexlist.txt --output C:\Users\asdfasdf\workspace\Baucar\app\build\intermediates\dex\debug --input-list=C:\ Пользователи\asdfasdf\workspace\Baucar\app\build\intermediates\tmp\dex\debug\inputList.txt Код ошибки: 3 Выход: предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net. lingala.zip4j.unzip.Unzip$1), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.unzip.Unzip$2), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.util.ArchiveMaintainer$1), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.util.ArchiveMaintainer$2), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (net.lingala.zip4j.zip.ZipEngine$1), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был создан компилятор, который не предназначен для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Последствие игнорирования это предупреждение состоит в том, что отражающие операции над этим классом будут неправильно указать, что это *не* внутренний класс. НЕОЖИДАННАЯ ОШИБКА ВЕРХНЕГО УРОВНЯ: java.lang.OutOfMemoryError: пространство кучи Java на com.android.dx.rop.code.RegisterSpec$ForComparison.toRegisterSpec(RegisterSpec.java:642) на com.android.dx.rop.code.RegisterSpec.intern(RegisterSpec.java:73) на com.android.dx.rop.code.RegisterSpec.make(RegisterSpec.java:90) на com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:323) на com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612) в com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:412) на com.android.dx.cf.code.Simulator.simulate(Simulator.java:94) в com.android.dx.cf.code.Ropper.processBlock(Ropper.java:787) на com.android.dx.cf.code.Ropper.doit(Ropper.java:742) на com.android.dx.cf.code.Ropper.convert(Ropper.java:349) на com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:280) на com.android.dx.dex.cf.CfTranslator. translate0(CfTranslator.java:137) на com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93) в com.android.dx.command.dexer.Main.processClass(Main.java:729) в com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) на com.android.dx.command.dexer.Main.access$300(Main.java:82) в com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602) на com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) на com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) в com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) на com.android.dx.command.dexer.Main.processOne(Main.java:632) в com.android.dx.command.dexer.Main.processAllFiles(Main.java:505) на com.android.dx.command.dexer.Main.runMultiDex(Main.java:332) на com.android.dx.command.dexer.Main.run(Main.java:243) на com.android.dx.command.dexer.Main. main(Main.java:214) на com.android.dx.command.Main.main(Main.java:106)
Это из-за одной используемой библиотеки jar (zip4j)? Я попытался удалить его, но ошибка OOM все еще возникает. Есть идеи, как это исправить?
Редактировать:
Я также отредактировал файл gradlew, чтобы увеличить размер -Xmx.
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\" \"-Xmx2048M \"-XX:MaxPermSize=512M\" \ "-XX:ReservedCodeCacheSize=512M\""
Ничего не меняется.
Редактировать 2:
Также сделал это исправление, но тоже не помогло:
Попробуйте следующее:
Ctrl + Alt + S -> Компилятор -> Gradle
В поле Options4
3 VM: 0
-Xmx2048м -XX:MaxPermSize=512м
android — Ошибка нехватки памяти на мобильных телефонах с высоким разрешением
Мое приложение отлично работает на планшетах, занимая памяти очень мало, около 20-30 МБ, как видно СУБД -> Отладка и отслеживание кучи. Но при запуске того же приложения на таких устройствах, как Samsung Galaxy Note-4 (2560 x 1440) и LG G3 (2392 x 1440), при первой активности он занимает около 200 МБ пространства в куче, а затем постоянно растет.
Я пытался проверить logcats на утечку памяти и исправленные проблемы, проверил наличие курсора и экземпляров базы данных, которые также закрыли их. Пытался закончить занятие, как только перешел к другому. Но все еще получаю ошибку «Недостаточно памяти» .
Пытался даже увеличить размер кучи до большого, но это не помогает, так как память почему-то не освобождается.
Примечание: Я использую одни и те же изображения для всего приложения, разные папки для других устройств не создаются. Размер всего изображения составляет около 4 МБ, что составляет почти 400 изображений, но только 15 изображений используются одновременно в любом макете.
- android
- нехватка памяти
- куча памяти
2
Я получил ответ на свою проблему, много читая в течение 3 дней, наконец, моя проблема решена.
Что ж, происходит то, что
setBackgroundResource(R.drawable.imageName)
заставит Android сначала сделать
BitmapFactory.decodeResource()
Который на самом деле будет выполнять некоторую передискретизацию на основе плотности экрана (т. е. автоматическая передискретизация на основе плотности для разрешения устройства) что приводило к значительному увеличению размера, а также для изображений PNG.
Android занимает почти в 10 раз больше места для рендеринга PNG, чем JPG, поэтому он занимал много места, так как мое приложение отображало 10-15 изображений PNG при любой активности. Поскольку Android не освобождает место в памяти, если ваше приложение работает, в результате OOM (Недостаточно памяти) Возникает ошибка .
Итак, что я сделал, так это просто поместил res/drawable
в res/drawable-nodpi/
(для предотвращения автоматической повторной выборки на основе плотности) , и я отсортирован.
Надеюсь, это поможет кому-то еще.
Справочная ссылка:
Использование памяти фонового изображения Android
2
Возможно, вы неправильно увеличиваете размер кучи. В AndroidManifest
поставить:
android:largeHeap="true"
Если не работает, попробуйте использовать это в файле
build.settings`:
settings ={ android = {largeHeap = true }}
Если не работает, попробуйте:
14
А затем
Также вы можете программно увеличить размер кучи:
Проверить наличие объектов ApplicationInfo
с FLAG_LARGE_HEAP
.