2015-02-24 57 views
6

我試圖爲SBT如何配置與元空間中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

回答

24

(複製粘貼從親愛的同事誰找到了解決辦法)

sbt -mem 2048 

=>

-Xms2048m 
-Xmx2048m 
-XX:ReservedCodeCacheSize=256m 
-XX:MaxMetaspaceSize=512m 

默認的元數據空間基於使用「-mem」選項指定的xmx值;-)

3

看來,當他們在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/) 
> 

不知道這是否是一個錯誤或功能

2
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 
4

當使用SBT 0.13.6或更高版本,你可以在項目中創建根.sbtopts文件有:

-J-XX:MaxMetaspaceSize=512M