HotSpot VM
* 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
: 타입 체크시의 제약 사항을 추정하는 용도로 사용된다