* 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 |