* HotSpot VM

> Java HotSpot (= JIT Compiler) Performance Engine

> Java 3 부터 default VM 으로 사용됨

> VM Runtime, JIT Compiler, Memory 관리자 등으로 구성됨


* HotSpot 의 Class MetaData

1. 클래스를 로딩하면 클래스에 대한 instanceKlass 와 arrayKlass 라는 내부 형식을 VM Perm 영역에 생성

: instanceKlass 는 클래스의 정볼르 포함하는 java.lang.Class 클래스의 인스턴스를 말한다

2. 내부 데이터 구조인 klassOop 라는 것을 사용하여 내부적으로 instanceKlass 에 접근한다

: Oop (Ordinary object pointer)


* 내부 클래스 로딩 데이터의 관리

> HotSpot VM 은 클래스 로딩을 추적하기 위해서 다음 3개의 Hash Table 을 관리한다


> SystemDictionary

: 로드된 클래스를 포함하며, 클래스 이름 및 클래스 로더를 Key를 가지고 그 값으로 klassOop를 갖고 있다

: 클래스 이름과 초기화한 로더의 정보, 클래스 이름과 정의한 로더의 정보도 포함한다

: 이 정보들은 safepoint 에서만 제거된다

> PlaceholderTable

: 현재 로딩된 클래스들에 대한 정보를 관리한다

: ClassCircularity Error 를 체크할 때 사용하며, 다중 스레드에서 클래스를 로딩하는 클래스 로더에서도 사용된다

> LoaderConstraintTable

: 타입 체크시의 제약 사항을 추정하는 용도로 사용된다




'SW > ::: Java' 카테고리의 다른 글

JIT Compiler  (0) 2020.10.10
Class Loading  (0) 2020.10.10
Java GC 및 Memory 설정  (0) 2020.10.10
Stream (스트림)  (0) 2020.10.09
JVM (시작, 종료, 예외처리, 동기화)  (0) 2020.10.09

+ Recent posts