Eu tenho um aplicativo de inicialização de mola e continuo recebendo avisos de memória R14 no heroku. Acredito que o problema esteja na coleta de lixo e no tamanho de heap pouco frequentes, pois a ativação manual do coletor de lixo em um intervalo constante faz com que o problema desapareça, mesmo quando o teste de estresse é feito com usuários virtuais. Então, o meu próximo passo foi fornecer uma solução mais limpa, otimizando o jvm em vez de acionar o gc manualmente. Reduzi o tamanho de heap padrão de 300 para 250m e defini o limite de geração antigo em 50%. Com esta configuração na minha máquina local, o heap usado estava entre 50-70mb, o que deve ser ok. Eu então tentei definir as configurações do jvm no heroku. Vendo as opções padrão quando não apresentei nenhum procfile sendo:
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 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 retornou.