클래스 로더(ClassLoader)
Java 프로그램이 실행될 때 클래스 파일을 로드하는 데 사용되는 핵심 구성요소.
Java ClassLoader는 Java 클래스 파일을 JVM에 로드하여 해당 클래스를 사용할 수 있도록 합니다.
- Bootstrap ClassLoader
- JVM에는 먼저 Bootstrap ClassLoader가 로드된다. 이 ClassLoader는 Java 표준 라이브러리에 포함된 클래스 파일을 로드한다.
- Extension ClassLoader
- Java 확장 라이브러리를 로드하는데 사용된다.
- System ClassLoader
- 사용자가 작성한 클래스 파일을 로드하는 데 사용된다.
클래스 로딩(Class Loading)
JVM이 클래스 파일을 읽어들이는 과정.
1. 로딩
- 클래스 로더가 클래스 파일(.class)을 읽어서 JVM 내부로 로드한다.
- 클래스 로더는 클래스 파일을 찾기 위해
Classpath
를 사용하며, 클래스 파일을 못찾은 경우ClassNotFoundException
이 발생한다.
2. 링크
- 로드된 클래스 파일이 사용 가능한 형태가 되도록 메모리에 배치한다.
- 검증
- 클래스 파일의 구조 검사.
- 준비
- 클래스에 필요한 메모리를 할당하고, static 변수 초기화.
- 변수와 메서드의 주소 할당
- 연결
- 클래스가 참조하는 다른 클래스와의 연결을 수행한다.
3. 초기화
- 클래스의 static 변수나 static 블록을 실행한다.
클래스 로딩은 동적으로 수행되며, 클래스가 처음 사용될 때 수행된다. 따라서, 클래스가 여러 번 사용되더라도 처음 로딩될 때만 클래스 로딩이 수행된다.
또한, 클래스 로딩은 계층적으로 이루어지며, 부모 클래스 로더에서 클래스를 찾지 못한 경우 자식 클래스 로더에서 찾는 방식으로 동작한다.
'Java' 카테고리의 다른 글
Easy Random을 이용한 객체 생성 (0) | 2022.12.22 |
---|
댓글