Eu tenho um aplicativo de inicialização por primavera e continuo recebendo avisos de memória R14 no heroku. Acredito que o problema esteja na coleta de lixo pouco frequente e no tamanho da pilha, pois o acionamento manual do coletor de lixo em um intervalo constante faz com que o problema desapareça, mesmo quando o estresse é testado com usuários virtuais. Portanto, meu próximo passo foi fornecer uma solução mais limpa, otimizando a jvm em vez de acionar o gc manualmente. Reduzi o tamanho padrão do heap de 300 para 250m e defini o limiar de geração anterior em 50%. Com essa configuração na minha máquina local, o heap usado estava entre 50 e 70 mb, o que deve estar ok. Em seguida, tentei definir as configurações da jvm no heroku. Vendo as opções padrão quando não apresentei nenhum processo:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/*.jar
Eu adicionei meus parâmetros desejados da seguinte forma:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/*.jar -Xms64m -Xmx250m -XX:CMSInitiatingOccupancyFraction=50 -XX:+PrintGCDetails -Xlog:gc
No entanto, isso não vai funcionar.
Durante a inicialização, recebo esta mensagem:
Starting process with command `java -Dserver.port=22382 $JAVA_OPTS -jar build/libs/*.jar -Xms64m -Xmx250m -XX:CMSInitiatingOccupancyFraction=50 -XX:+PrintGCDetails -Xlog:gc`
Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -Dfile.encoding=UTF-8
Também não consigo ver nenhuma mensagem do coletor de lixo e o erro R14 voltou.