티스토리 뷰

-Xms -Xmx 는 무엇일까?

Java vm 옵션이다.

  • -Xms 는 Java 힙의 최초 크기를 지정하는 것
  • -Xmx 는 Java 힙의 최대 크기를 지정하는 것

 

즉, Java heap 메모리는 -Xms 로 지정한 메모리 크기로 시작하여 -Xmx 로 지정한 메모리 크키까지 커지게 된다.

 

 

예시로 다음과 같이 작성할 수 있다.

java -Xms2048m -Xmx2048m -jar some-jar-file.jar

 

 

Xms, Xmx는 왜 같은 값으로 지정하는 것일까?

상용 서비스 서버 빌드배포(CI/CD) 스크립트를 보다보면 -Xms, -Xmx 옵션에 같은 값이 적혀져 있는 경우를 많이 볼 수 있었다.

 

단순히 생각하면 같은 값을 준다는 것은 그냥 처음부터 최대크기의 heap 메모리를 사용하겠다 라는 것인데... 왜 그런 것일까?

 

언제나 그렇듯 그 이유는 "성능" 때문이다.

  • 적은 값의 -Xms 옵션으로 Java를 실행하게 되면, 결국엔 더 자주 GC (Grabage Collect)를 발생시키게 된다. 이를 통한 성능적인 이슈가 있을 수 있다.
  • 또한, 일단 Java 프로그램의 Heap 메모리 사용량이 -Xms 에 다 다르면 OS에게 추가적인 메모리 할당을 요구하게 된다. 이렇게 해서 -Xmx 옵션으로 지정한 메모리 크기까지 메모리 할당을 받을 수 있는 것인데, OS에게 메모리 할당하는 부분에서 추가적인 시간이 필요하고 이 부분에서 성능적인 이슈가 발생할 수 있다고 하다.

 

그렇기 때문에 상용환경에서는 처음부터 -Xmx 으로 지정한 Heap 메모리 크기를 가지고 시작하는 것이 좋고, 결국엔 -Xms 로 지정한 메모리 크기와 -Xmx 로 지정한 메모리 크기를 같게해 Java 프로그램을 구동하게 되는 것이다.

320x100
반응형

'Development > Java, Kotlin, Frameworks' 카테고리의 다른 글

Spring boot - access log  (0) 2021.08.21
[JPA] 영속성 전이 CASCADE  (0) 2021.08.09
[Spring Boot] Container image 만들기 !  (0) 2021.06.24
Maven Profile 설정  (0) 2021.06.04
[Spring Reactive] WebClient  (2) 2021.04.24
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함