java 프로세스를 실행했다.
초기 메모리 값을 20기가로 설정했다.
근데 내 실제 물리 메모리가 4기가라면?
즉 jvm 초기 메모리를 물리 메모리 보다 많이 잡으면?
해보니까 일단 실행은 되더라
아무 문제 없이 프로세스도 잘 돌아감.
이 상태에서 빠르게 표준출력을 때리다보면 결국 메모리가 99% 차는 순간이 온다.
그 순간 Linux의 OOM killer가 PID를 부여 받은 친구들을 쭉 순회하며 죽일 놈을 찾는다.
그리고 Java는 마치 강제종료 당한 것처럼 Shutdown 시그널도 못받은 상태로 다운 된다.
graceful한 종료를 만드려고 Shutdown Hook을 걸어봤자 강제로 사망하니 뭐 별 수 있나...
kill -9랑은 다르게 동작하는거 같은데 어쨋든 사망함.
보일라나 모르겠는데 어쨋든 oom님께서 사망시킨다.
상기 로그는 어디서 보냐면
dmesg라는 명령어를 통해 봤다.
https://www.lesstif.com/lpt/log-dmesg-98926711.html
상기 주소로 가면 조금은 상세한 사항이 써 있음.
리눅스에서 개발한다면 알고 가자.
oom killer 역시 구글에 뭐 드릅게 많이 널려 있으니까 참고하셈
근데 솔직히 우선순위 조절할 일은 없어야 하지 않을까...