본문 바로가기
Java

클래스 로더, 클래스 로딩

by dvid 2023. 3. 1.

클래스 로더(ClassLoader)

Java 프로그램이 실행될 때 클래스 파일을 로드하는 데 사용되는 핵심 구성요소.
Java ClassLoader는 Java 클래스 파일을 JVM에 로드하여 해당 클래스를 사용할 수 있도록 합니다.

  1. Bootstrap ClassLoader
    • JVM에는 먼저 Bootstrap ClassLoader가 로드된다. 이 ClassLoader는 Java 표준 라이브러리에 포함된 클래스 파일을 로드한다.
  2. Extension ClassLoader
    • Java 확장 라이브러리를 로드하는데 사용된다.
  3. System ClassLoader
    • 사용자가 작성한 클래스 파일을 로드하는 데 사용된다.

클래스 로딩(Class Loading)

JVM이 클래스 파일을 읽어들이는 과정.

1. 로딩

  • 클래스 로더가 클래스 파일(.class)을 읽어서 JVM 내부로 로드한다.
  • 클래스 로더는 클래스 파일을 찾기 위해 Classpath를 사용하며, 클래스 파일을 못찾은 경우 ClassNotFoundException이 발생한다.

2. 링크

  • 로드된 클래스 파일이 사용 가능한 형태가 되도록 메모리에 배치한다.
  1. 검증
    • 클래스 파일의 구조 검사.
  2. 준비
    • 클래스에 필요한 메모리를 할당하고, static 변수 초기화.
    • 변수와 메서드의 주소 할당
  3. 연결
    • 클래스가 참조하는 다른 클래스와의 연결을 수행한다.

3. 초기화

  • 클래스의 static 변수나 static 블록을 실행한다.

클래스 로딩은 동적으로 수행되며, 클래스가 처음 사용될 때 수행된다. 따라서, 클래스가 여러 번 사용되더라도 처음 로딩될 때만 클래스 로딩이 수행된다.
또한, 클래스 로딩은 계층적으로 이루어지며, 부모 클래스 로더에서 클래스를 찾지 못한 경우 자식 클래스 로더에서 찾는 방식으로 동작한다.

'Java' 카테고리의 다른 글

Easy Random을 이용한 객체 생성  (0) 2022.12.22

댓글