Как настроить metaspace с помощью SBT
Я пытаюсь настроить metaspace для SBT
export SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=256M -Xms2G -Xmx2G"
но когда я запускаю sbt -v
, у меня следующие результаты :
[process_args] java_version = '1.8.0_11'
# Executing command line:
java
-XX:+CMSClassUnloadingEnabled
-XX:MaxMetaspaceSize=512M
-XX:MetaspaceSize=256M
-Xms2G
-Xmx2G
-Xms1024m
-Xmx1024m
-XX:ReservedCodeCacheSize=128m
-XX:MaxMetaspaceSize=256m
-jar
/usr/local/Cellar/sbt/0.13.7/libexec/sbt-launch.jar
проблема в том, что мое пользовательское значение для MaxMetaspaceSize
переопределяется другим значением, как показано в выводе выше.
версия SBT: 0.13.7
версия Java: 1.8
OS: OSX
4 ответов
(копия вставлена от дорогого коллеги, который нашел решение)
sbt -mem 2048
=>
-Xms2048m
-Xmx2048m
-XX:ReservedCodeCacheSize=256m
-XX:MaxMetaspaceSize=512m
метапространство по умолчанию основано на значении xmx, указанном с параметром "- mem"; -)
при использовании sbt 0.13.6 или выше вы можете создать .sbtopts файл в корне проекта с:
-J-XX:MaxMetaspaceSize=512M
кажется, что параметры памяти правильно обрабатываются только тогда, когда они указаны в JAVA_OPTS
задание export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=256M -Xms2G -Xmx2G"
дает
sbt -v
[process_args] java_version = '1.8.0_40'
# Executing command line:
java
-XX:+CMSClassUnloadingEnabled
-XX:MaxMetaspaceSize=512M
-XX:MetaspaceSize=256M
-Xms2G
-Xmx2G
-jar
/usr/local/Cellar/sbt/0.13.8/libexec/sbt-launch.jar
[info] Loading global plugins from /Users/ant/.sbt/0.13/plugins
[info] Set current project to ant (in build file:/Users/ant/)
>
не уверен, что это ошибка или функция
export SBT_OPTS="-XX:MaxMetaspaceSize=512m -Xms1024m -Xmx1024m"
работает для меня в sbt 0.13.11:
sbt -v
[process_args] java_version = '1.8.0_91'
# Executing command line:
java
-XX:MaxMetaspaceSize=512m
-Xms1024m
-Xmx1024m
-jar