클래스 로더(Class Loader)

이지호·2021년 11월 25일

클래스로더(Class Loader)란

클래스 로더란 JRE의 일부로써 자바 소스코드가 자바 컴파일러에 의해 컴파일된 결과인 자바 바이트 코드를 JVM의 메서드 영역(Method Area)으로 로드하는 역할을 한다.

기본 클래스로더의 종류

  • 부트 스트랩 클래스로더(BootStrap ClassLoader)
    기본 클래스로더 중 가장 최상위 클래스 로더이며, 네이티브 언어로 작성되어있다.

  • 확장 클래스로더(Extension ClassLoader) // Java9 부터는 플랫폼 클래스로더
    부트스트랩 클래스로더를 부모 클래스로더로 갖는 클래스로더로써 확장 자바 클래스들을 로드한다.

  • 어플리케이션 클래스로더(Application ClassLoader) // Java9 부터는 시스템 클래스로더
    Classpath나 JAR파일안에 있는 Manifest 파일의 Class-Path 속성 값으로 지정된 폴더에 있는 클래스들을 로드한다. Java로 구현되어있으며, 개발자가 직접 작성한 클래스들은 주로 어플리케이션 클래스로더에 의해 로드된다.

클래스 로더의 특징

  • 계층 구조 : 클래스 로더끼리 부모-자식 관계를 이루어 계층관계 생성.
    최상위 클래스 로더는 부트 스트랩 클래스 로더.
  • 위임모델 : 계층구조를 바탕으로 클래스 로더끼리 로드를 위임하는 특징
    클래스 로드시 상위클래스 로더를 확인하여 존재하면 해당 클래스 사용.
    없다면 요청받은 클래스로더가 클래스를 로드
  • 언로드 불가 : 언로드는 불가하여 현재 클래스 로더를 삭제하고 새로운 클래스 로더를 생성

0개의 댓글