티스토리 뷰
-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
링크
TAG
- Clean Architecture
- HTTP
- 하루
- python
- java
- WebFlux
- jasync
- Log
- 로그
- Spring
- container
- Istio
- 일상
- 클린 아키텍처
- tag
- gradle
- 비동기
- Algorithm
- Intellij
- Spring boot
- hexagonal architecture
- boj
- 알고리즘
- docker
- k8s
- 백준
- Kubernetes
- c++
- MySQL
- 쿠버네티스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함