JVM Specification

링크 : https://docs.oracle.com/javase/specs/jvms/se20/html/index.html

 

우아한 테크 10분 테코톡

https://www.youtube.com/watch?v=6reapO0gLPs

 

JVM Specification : JVM의 표준

 

JVM : JVM Specification에 정의되어 있는 대로 구현 시킨 무언가.

 

그래서 원칙적으로는 누구나 JVM을 만들 수 있음.

그리고 이런 JVM을 만드는 조직들을 Vendors라고 부름.

기존의 JVM은 레거시라고 판단해 완전히 갈아엎는 프로젝트들도 진행되고 있다.

 

저 SPEC에 정의된 기능을 할 수 있다면 무엇이든 JVM이 될 수 있다.

이전엔 JVM의 실행 엔진을 하드웨어로 구현한 적도 있다.

 

결론 : JVM은 누구든 만들 수 있고 구현된 형태에 대해서는 어떠한 제약도 없다.

 

+) JVM Specification 관련하여

Spec 자체는 600P에 달함.

 

이것을 대략적으로 개괄도로 그린 것이 아래 그림.

그런데 살펴보면

Garbage Collection이나 JIT Compiler에 대한 내용은 들어가 있지 않음.

 

그 내용은 Spec의 Chapter 2 시작 부분에서 설명함.

즉, JVM Spec 자체는 많은 부분이 추상화 되어 있고,

이를 구현하는 vendor들이 고도의 테크닉을 사용해 뛰어난 JVM을 만들어 냈다.

그 결과가 현재 JVM에 구현된 garbage-collection 알고리즘이나 메모리 레이아웃, JIT 컴파일러.

JVM 별 GC 종류

  1. Oracle HotSpot JVM:
    • Serial GC
    • Parallel GC
    • G1 GC (Garbage-First GC)
    • ZGC (Z Garbage Collector)
  2. OpenJ9 JVM (Eclipse OpenJ9):
    • Balanced GC
    • OptAvgPause GC
    • GenCon GC
  3. Azul Zing JVM:
    • C4 GC (C4 Garbage Collector)
  4. IBM J9 JVM :
    • Balanced GC
    • OptAvgPause GC
  5. Corretto JVM :
    • G1 GC (Garbage-First GC)

'CS > JAVA' 카테고리의 다른 글

this() 키워드로 다른 생성자 호출 시 맨 앞에 나와야 하는 이유  (0) 2024.07.09
Java Virtua Machine  (0) 2023.08.23

+ Recent posts