공부

[JVM] Used, Committed, Max Heap Memory 란

호키포키장 2025. 3. 2. 00:27
JVM은 메모리를 여러 목적으로 분리해서 사용한다. 크게 Heap, Stack, Native, Direct Memory 로 나눌 수 있는데
그 중 애플리케이션 의해서 만들어진 오브젝트를 저장하는 Heap Memory 의 메모리 관리와 관련된 세가지 지표를 알아보자.

 

Max Heap Memory

-Xms : heap 의 초기 크기 지정

-Xmx : heap의 최대 크기 지정

 

이 플래그들을 설정하지 않으면, JVM은 OS, RAM, 자체 설정등을 고려한 기본값을 설정한다.

heap은 어플리케이션이 구동될 때, 실제 사용하고 있는 값이나 / 디폴트 값과 관계없이 설정해둔 특정한 "초기 사이즈"으로 설정된다.

heap 이 차지하는 메모리는 이 max size를 넘어갈 수 없다.

 

*컨테이너 환경에서는 UseContainerSupportMaxRamPercentage 옵션을 통해 실제 컨테이너에 할당받은 (전체) 메모리를 기준으로 heap 사용량을 적절히 설정할 수 있다.

 

Used Heap Memory

실제 오브젝트들이 차지하고 있는 메모리 양.

 

Committed Heap Memory

Committed Heap Memory는 JVM이 메모리를 사용하기 위해 잡아둔/확보한 메모리를 뜻한다.

 

 

참고

https://www.baeldung.com/java-jvm-memory-types

https://www.baeldung.com/java-heap-used-committed-max

 

TODO; JVM 밑바닥까지 파헤치기 책에 있는 내용도 옮겨오자.