私はスプリングブートアプリケーションを持っていて、私はherokuでR14メモリ警告を受け続けています。仮想ユーザーによるストレステストでも、ガベージコレクターを一定の間隔で手動でトリガーすると問題が消えるため、ガベージコレクションとヒープサイズの頻度が低いことが問題の原因と考えています。だから私の次のステップは手動でgcを起動する代わりにjvmを最適化することによってよりクリーンな解決策を提供することでした。デフォルトのヒープサイズを300から250 mに減らし、旧世代のしきい値を50%に設定しました。私のローカルマシン上のこの設定では、使用されたヒープは50-70mbでしたが、これは問題ないはずです。それから私はherokuのjvm設定を設定しようとしました。 procfileを提示していないときのデフォルトオプションの表示
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/*.jar
私はそのような私の希望のパラメータを追加しました:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/*.jar -Xms64m -Xmx250m -XX:CMSInitiatingOccupancyFraction=50 -XX:+PrintGCDetails -Xlog:gc
ただし、これは機能しません。
起動時に私はこのメッセージが出ます:
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
ガベージコレクタメッセージも表示されず、R14エラーが返されました。