Многие библиотеки приводят к Причины: java.lang.OutOfMemoryError - PullRequest
0 голосов
/ 26 мая 2019

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

в gradle.properties

org.gradle.jvmargs=-Xmx16g -XX:MaxPermSize=16g -XX:+HeapDumpOnOutOfMemoryError
GRADLE_OPTS=-Xmx16g

в граде (приложение)

dexOptions { javaMaxHeapSize "16g" }

звучит так, как будто эти значения не имеют никакого значения, дают им 1G или 100G. Его значение не имеет значения, тогда как это? Еще до запуска приложение 80MB уже используется! Проверьте фотографии:

Idle: enter image description here

Ошибка памяти: enter image description here

В этом фиксированном размере возникает ошибка нехватки памяти. Как вы видите на картинках. Это происходит, когда я нажимаю кнопку запуска и она не запускается, это выдает ошибку памяти, но в среднем в JProfiler используемый размер приближается к фиксированному размеру, а когда он достаточно близко, возникает ошибка. Как увеличить этот фиксированный размер? Это не память моего устройства, которая сейчас составляет около 1,55 ГБ. Тогда что это? Я не должен создавать приложение Hello World. Я написал абсолютно чистый код, и я не вызываю этого, приложение работало отлично, ничего медленного, ничего не переполняется. Но когда я добавляю больше библиотек, я их еще даже не использую! Я получаю ошибку памяти. Вот куча ходок:

enter image description here

выглядит вполне нормально для меня. Чар и String наверху, что мне делать? Пожалуйста, помогите мне. Спасибо!

1 Ответ

0 голосов
/ 28 мая 2019

Я не знаю о специфике gradle, но стандартный переключатель для установки MaxHeapSize - -Xmx; здесь может помочь поиск: Запустите приложение через Gradlew с -Xmx и -Xms .

Если вы говорите о запуске приложения (в отличие от «сборки»), вы можете сначала попытаться создать окончательный JAR-файл и запустить его как отдельное приложение (через java -Xmx... -jar).

Вы получаете какую-либо конкретную ошибку OOM?

Btw. Судя по опубликованной вами -XX:MaxPermSize, вы, похоже, используете действительно старую версию до Java 8 (или неправильно устанавливаете аргументы JVM). Вы должны рассмотреть вопрос об обновлении.

...