Estou usando o SBT 0.12.0. Eu li outras respostas sobre estouro de pilha e as segui, porém nenhuma delas ajuda, por exemplo:
- criar
ForkRun
classe - não observei nenhum processo bifurcado durante meu uso do sbt - definir a variável de ambiente
JAVA_OPTS
- está definida, mas a linha de comando do processo sbt não parece usá-la. sbt -J-Xmx2G
anexa o parâmetro à linha de comando do processo sbt, no entanto, o valor antigo-Xmx1536m
é usado por sbt em vez do parâmetro anexado.
Estou esquecendo de algo? Como defino o tamanho do heap para sbt 0.12, ao fazer os testes e run
?
mem
parâmetro ao iniciar o sbt? (por exemplosbt -mem2000
)Respostas:
Você precisa
SBT_OPTS
, aqui está o que eu uso em meu .bash_profile :ATUALIZAÇÃO: para obter seu espaço de heap 2G, você pode usar isto:
NOTA: SBT DEVE SER A VERSÃO MAIS RECENTE
Versões mais antigas do
sbt
contêm bugs que substituem essas configurações, usebrew upgrade sbt
para o mais recentesbt
para Mac (assumindo a instalação do brew) (IDK para Linux). https://github.com/sbt/sbt/issues/2945#issuecomment-277490848fonte
-Xmx1546m
ainda existe na linha de comando e o tamanho máximo do heap ainda é limitado a 1,5 GB, conforme mostrado no visualvm.Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=4G; support was removed in 8.0
Em março de 2015, se você estiver usando sbt no OSX com Homebrew , você deve editar o arquivo
/usr/local/etc/sbtopts
por exemplo
fonte
/etc/sbt-launcher-packaging
./etc/sbt/sbtopts
SBT_OPTS=-Xmx2G sbt
para iniciar o SBT, ele aumentará o heap conforme necessário até um máximo de 2 GB."sbt -mem 23000 run" funciona para mim.
fonte
Eu encontrei a solução. Não importa como você especifica o tamanho de heap da JVM, ele nunca funcionará porque o executável SBT já o substituiu.
Existe uma linha no executável SBT que diz:
. /usr/share/sbt/sbt-launch-lib.bash
Então, editei o arquivo:
Remova a
-
linha.Agora, ao executar o SBT, ele não substituirá mais as configurações de tamanho de heap da JVM. Você pode especificar as configurações de tamanho de heap usando a resposta de @Noan.
Ou alternativamente:
sbt -J-Xmx4G -J-Xms4G
fonte
export SBT_OPTS="..."
no~/.sbtconfig
funciona de fato.No Windows, para sbt 0.13.9.2, você precisa definir
JAVA_OPTS
as opções jvm desejadas.O
sbt.bat
script carrega seus padrões deconf\sbtconfig.txt
em,CFG_OPTS
mas usará em seuJAVA_OPTS
lugar se definido.Trechos relevantes de
sbt.bat
:. . . (pular). . .
fonte
Eu estava tentando resolver um problema como esse no Mac OS X com uma instalação homebrew do SBT. Se você instalou o SBT via homebrew, está seguro, pois o
/usr/local/bin/sbt
arquivo pareceIsso significa que todas as configurações que você fizer
SBT_OPTS
serão mantidas (seu -Xmx terá precedência). Além disso, a primeira linha do script executará quaisquer comandos,~/.sbtconfig
se houver, então pode ser um lugar melhor para colocar suas opções de SBT se você estiver brincando um pouco com elas. Você não precisará fazer issosource ~/.bash_profile
toda vez que fizer uma mudança paraSBT_OPTS
fonte
-mem
parâmetro em/usr/local/etc/sbtopts
Se estiver executando sbt do PowerShell, defina a
SBT_OPTs
variável de ambiente, assim:Então corra:
fonte
Para o SBT versão 1.0.4 no Windows, as configurações JVM
sbt\conf\sbtconfig.txt
padrão vêm do arquivo. Simplesmente edite os valores aqui. Mude-Xmx512M
para-Xmx2048M
.Esta não é a única fonte de opções de JVM para SBT. Outros podem ser encontrados inspecionando
sbt.bat
. Uma simples maneira de diagnosticar, onde fazer as configurações vêm, é por comentar esta linha no arquivo de lote:@echo off
.fonte
sbt\conf
não é colocado no diretório do usuário, mas na pasta Arquivos de programas, comoC:\Program Files (x86)\sbt\conf
.Uma maneira rápida de fazer isso é com um
.jvmopts
arquivo na raiz do seu projeto (da documentação do Lagom Framework ):fonte
No meu caso, a configuração do meu serviço estava sobrescrevendo a variável de ambiente
SBT_OPTS
eJAVA_OPTS
. Consegui definir os limites definindobuild.sbt
o seguinte:Referência: https://www.scala-sbt.org/sbt-native-packager/archetypes/java_app/customize.html
fonte