JVM 초기 힙 메모리 할당 [중복]

Dec 07 2020

-Xms 및 -Xmx 값을 동일한 4GB로 지정했습니다. 이제 스프링 부트 애플리케이션을 시작할 때 OS가 애플리케이션을 시작한 직후에 4GB의 메모리를 할당한다는 가정하에있었습니다. 이것이 -Xms 인수를 사용하여 지정된 값이기 때문입니다. 하지만 응용 프로그램의 Resident Set과 힙 메모리 (JMX 사용)를 확인하면 할당 된 메모리가 여전히 1GB 미만임을 알 수 있습니다. 따라서 OS가 반드시 -Xms를 사용하여 지정된 메모리를 할당하는 것은 아닙니다.

미리 감사드립니다.

답변

JurajMartinka Dec 07 2020 at 12:23

어떤 OS와 어떤 JVM 벤더 / 버전을 말하지 않았지만 종종 OS가 페이지를 느리게 할당합니다. 즉, 필요하지 않으면 RAM ( "상주")에 있지 않습니다. 애플리케이션에 실제로 해당 힙 메모리가 필요하지 않은 경우 상주하지 않습니다. 또한 점유율이 너무 낮은 경우 "-Xms"미만으로도 힙이 줄어들 수있는 "적응 크기 정책"이 있습니다.https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html