1. 들어가며


클래스 파일에 서술된 정보를 가상 머신이 활용하려면 먼저 로드해야한다. 가상 머신이 클래스 파일을 로드하는 방법과 그 정보를 가상 머신 안에서 활용하는 방법이 이번 장의 주제이다.

JVM은 클래스를 설명하는 데이터를 클래스 파일로부터 메모리로 읽어들이고, 이 데이터를 검증, 변환, 초기화하고 나서 최종적으로 가상 머신이 곧바로 사용할 수 있는 자바 타입을 생성한다. 이과 정을 클래스 로딩 메커니즘이라고 한다. → 런타임 클래스 로딩 (컴파일 클래스 로딩에 비해 성능은 떨어질 수 있으나 유연하다.)

2. 클래스 로딩 시점


가상머신의 메모리에 로드되는 걸 시작으로 다시 언로드 될때까지 다음과 같은 생애 주기를 거친다.

클래스를 로딩하는 시점은 VM 구현마다 다를 수 있고, 그 중 엄격하게 지켜지는 경우 몇가지도 있다.

3. 클래스 로딩 처리 과정


JVM이 클래스 로딩하는 전체 과정은 다음과 같다.

각 단계에 대해 알아보자.

3.1 로딩

JVM은 로딩 단계에서 다음과 같은 일을 한다.

  1. 완전한 이름을 보고 해당 클래스를 정의하는 바이너리 바이트 스트림을 가져온다.
  2. 바이트 스트림으로 표현된 정적인 저장 구조를 메서드 영역에서 사용하는 런타임 데이터 구조로 변환한다.