Android Gradle: Что такое javaMaxHeapSize «4g»?
В проекте android, build.gradle file, я прошел через эту строку
dexOptions{ javaMaxHeapSize "4g" }
Я хотел бы узнать точную цель этого javaMaxHeapSize и что это означает 4g . Какие другие ценности я могу дать?
- Не удалось найти com.android.tools.build:gradle:3.0.0-alpha1 в круге ci
- Как заменить строку для buildvariant с помощью gradle в android studio?
- Обновление Studio Studio Gradle до версии 0.5.0 - Gradle Migrating От 0,8 до 0,9 - Также обновление для Android Studio до 0.8.1
- Нет кэшированной версии com.android.tools.build:gradle:0.9.1 для автономного режима
- Лучший способ включить Volley (или другую библиотеку) в проект Android Studio
- Android Studio отмечает R красным цветом с сообщением об ошибке «не удается разрешить символ R», но assembly завершается успешно
- Android-Studio: Ошибка: не удалось создать виртуальную машину Java
- Gradle: Execution failed for task ': processDebugManifest'
- Android Studio - исключение mergeDebugResources
- Транзитные зависимости не разрешены для aar-библиотеки с использованием gradle
- Как передать аргументы из командной строки в gradle
- Использование типов сборки в Gradle для запуска того же приложения, которое использует ContentProvider на одном устройстве
- Как создать андроидную библиотеку с Android Studio и gradle?
Как уже упоминалось в ответе выше , просто указать максимальный пул распределения памяти для виртуальной машины Java (JVM) для работы с dex. И это то же самое, что и для java-аргумента -xmx
. Из-за его исходных кодов отсюда его сеттер выглядит так:
if (theJavaMaxHeapSize.matches("\\d+[kKmMgGtT]?")) { javaMaxHeapSize = theJavaMaxHeapSize } else { throw new IllegalArgumentException( "Invalid max heap size DexOption. See `man java` for valid -Xmx arguments.") }
Итак, вы можете видеть, что принятое значение должно соответствовать \d+[kKmMgGtT]?
шаблон, и, следовательно, нет, он даже ссылается на man java
чтобы узнать, как установить -xmx
. Здесь вы можете прочитать справочную страницу . И в нем говорится, что этот флаг:
Укажите максимальный размер пула распределения памяти в байтах. Это значение должно быть кратно 1024 больше, чем 2 МБ. Добавьте букву k или K, чтобы указать килобайты, или m или M, чтобы указать мегабайты. Значение по умолчанию выбирается во время выполнения на основе конфигурации системы.
В вашем примере 4g
– 4 гигабайта, и это максимальный размер кучи для работы dex.
Это недокументированный вариант увеличения размера кучи для работы с dex: https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ
dexOptions{ javaMaxHeapSize "4g" }
после написания этого в build.gradle
перейдите в gradle.properties
и включите эту строку:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8