잘 몰라서 설정하지 않았었는데 다행인지 이것으로 인한 문제는 발생하지 않았지만 추후에 문제 발생가능성을 고려하여 적용해보았다.
jvm 설정은 Java 애플리케이션의 실행 환경인 서버 성능에 맞는 튜닝이 필요하다.
AWS t4g.small을 기준으로 작성되었다.
설정을 하지않으면 호스트의 시스템 자원에 따라 결정이 된다.
jvmFlags = [
'-Dspring.profiles.active=prod',
'-Dfile.encoding=UTF-8',
'-Xms342m', '-Xmx512m',
'-XX:MaxMetaspaceSize=256m', '-XX:+CMSClassUnloadingEnabled',
'-verbose:gc', '-XX:+PrintGCDetails', '-XX:+PrintGCTimeStamps', '-XX:+PrintGCDateStamps'
]
애플리케이션의 메모리 요구 사항과 서버 리소스에 따라 조절해야한다. 단순히 서버 자원 크기에 따라 설정하는 것이 아니라 한 개의 서버에 컨테이너를 여러개 띄울경우도 고려해야하고 서버 스케일업 또한 고려해야한다.
Static과 GC의 관계 생각하여 메모리를 가득 잡아먹지 않게 조심하여 할당하면 된다.