[JVM] JVM 종류 - Hotspot vs JRockit
JVM에는 여러 종류가 있다.
JVM Specification에 JVM의 기능을 명세한다. JVM Specification을 구현한 여러 JVM이 존재하게된다. 명세서는 구글에 검색하면 언제든지 볼 수 있다.
JVM 명세서를 구현한 대표적인 JVM으로 Hotspot과 JRockit이 있다.
두 개로 나뉜 이유는 간단히 각각 특화된 부분이 다르기 때문이다.
Hotspot은 클라이언트 용 어플리케이션에 특화되었다. 반면에 JRockit은 서버용 프로세스에 특화되었다. JRockit은 Oracle Weblogic Server의 디폴트 JVM이고, Hotspot은 Java JDK/JRE의 디폴트 JVM이다.
메모리 구조 또한 다르다. 여기서는 그냥 이런게 있구나~하고 넘어가자. 나중에 알게된다.
Hotspot JVM의 메모리는 4부분으로 나뉜다
Perm : 영구적인 저장소. 클래스의 바이너리들이 로딩되는 곳
Eden : 새로운 young 오브젝트들이 시작되는 곳
Survivor space : Minor GC 후에도 남아있는 오브젝트들이 존재하는 곳
Tenured space : 오래사용되는 old한 객체들이 존재하는 곳
JRockit JVM 메모리는 2부분으로 나뉜다
Nursery : young 생성된지 얼마 안된 오브젝트들이 존재하는 곳
Old space : 오래된 오브젝트들이 존재하는 곳
메모리 구조 뿐만 아니라, 모니터링 툴도 다르다.
사용되는 목적이 다르고, 그에따른 메모리구조도 다르다보니 JVM 의 동작을 모니터링 하는 툴도 다르다. 그렇다면 어떤 JVM을 사용해야 될까??
Hotspot
- Swing과 같은 데스크탑 어플리케이션
- 빠르게 시작되는 JVM
JRockit
- 어플리케이션 서버
- 높은 성능, 느린 부팅
- full 모니터링 시스템이 필요
그렇다면 내가 사용하고있는 JVM이 어떤건지 어떻게 알까??
출력해보면 jvm 종류가 나온다. (java -version으로 해도 안나올 경우)
Hotspot과 JRockit은 합쳐지고 있다고 한다. 미리합쳐졌으면 둘다 공부 안해도됬을텐데....
'JAVA > JVM' 카테고리의 다른 글
[JVM] 기본 GC 튜닝 (0) | 2021.12.16 |
---|---|
[JVM] GC 알고리즘 - Overview (0) | 2021.12.16 |
[JVM] JIT 컴파일 로그, 컴파일 스레드, 인라이닝 튜닝 (0) | 2021.12.16 |
[JVM] JIT : Just In Time Compiler 개념 & 튜닝 (0) | 2021.12.16 |
[JVM] PERM 영역 이해하기 (0) | 2021.12.16 |
[JVM] CPU 사용률 , Run Queue 런큐 (0) | 2021.12.16 |
[JVM] Heap dump 힙 덤프 개념 - 왜 필요한가 (0) | 2021.12.16 |
[JVM] GC 기본개념 - JVM메모리 구조 / Minor GC / Full GC (0) | 2021.12.16 |