클래스 로딩이란?
외부 저장장치(ex: HDD, USB 메모리, DVD-ROM 등)에 있는 .class 파일을 JVM이 관리하는 메모리로 로딩하는 것을 말한다. 클래스는 클래스의 코드를 사용하는 시점에 메모리(Method Area 영역)에 로딩된다. 스태틱 멤버를 사용할 때, new 명령으로 인스턴스를 생성할 때가 이 시점에 해당된다. 클래스는 한번 로딩되면 프로그램이 종료될 때까지 유지한다.
클래스 로딩 과정
- 클래스를 외부 저장소에서 내부 저장소인 RAM으로 로딩한다. 정확하게는 클래스 파일을 JVM의 Method Area에 로딩한다.
- 클래스의 바이트코드의 유효성을 검사한다. (Verify)
- 스태틱 필드와 메서드 테이블을 준비한다. (Prepare)
- 참조하는 외부 클래스나 인터페이스를 검사한다. (Resolve)
- 다른 클래스나 인터페이스를 참조하는 것이 유효한 지 검사한다.
- 클래스를 초기화시킨다.
- 변수 초기화 문장(variable initializers), 스태틱 블록(static initializers)을 실행한다.
- main() 메서드를 호출한다.
- main() 메서드에 선언된 로컬 변수를 JVM Stack에 생성한다.
- main()의 코드를 실행한다.