javavm 초기 및 최대 힙 크기가 동일한 큰 값으로 설정됨

javavm 초기 및 최대 힙 크기가 동일한 큰 값으로 설정됨

Java 도움말에 나와 있는 것처럼 동일한 -Xms 및 -Xmx를 사용하여 Java 프로세스를 시작하는 것에 대한 귀하의 의견을 묻고 싶습니다.

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size

내부에Java VM 성능 팁/지침-Xms에 대한 제안이 있습니다.

"오라클은 가비지 수집을 최소화하기 위해 최소 힙 크기(-Xms)를 최대 힙 크기(-Xmx)와 동일하게 설정할 것을 권장합니다."

테스트를 위해 64GB RAM이 설치된 시스템에서 -Xms50g 및 -Xmx50g를 사용하여 Java 프로세스를 시작했습니다.

무료 출력의 "사용된" 값이 50GB까지 증가할 것으로 예상해야 합니까? 성장하지 않는 것 같나요? 아니면 긴 과정인가요?

$ while true;do free|grep ^Mem;sleep 1;done|ts '[%Y-%m-%d %H:%M:%S]'
[2018-12-01 22:03:08] Mem:       65808916     3345712    56556376       14556     5906828    61863688
[2018-12-01 22:03:09] Mem:       65808916     3347912    56554168       14556     5906836    61861484
[2018-12-01 22:03:10] Mem:       65808916     3347776    56554292       14556     5906848    61861608
[2018-12-01 22:03:11] Mem:       65808916     3348008    56554060       14556     5906848    61861376
[2018-12-01 22:03:12] Mem:       65808916     3347780    56554284       14556     5906852    61861600
[2018-12-01 22:03:13] Mem:       65808916     3348112    56553944       14556     5906860    61861260
[2018-12-01 22:03:14] Mem:       65808916     3347976    56554076       14556     5906864    61861392
[2018-12-01 22:03:15] Mem:       65808916     3347636    56554416       14556     5906864    61861736

-Xms/-Xmx를 그렇게 큰 값으로 설정하면 어떤 장점/단점이 있습니까?

답변1

프로세스에 해당 양이 필요한 경우 한도를 초과하고 GC를 시도하고 힙을 계속해서 늘리는 것보다 즉시 예약하는 것이 더 빠릅니다.

관련 정보