클래스 로더(Class Loader)

이지호·2021년 11월 25일
0

클래스로더(Class Loader)란

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

기본 클래스로더의 종류

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

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

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

클래스 로더의 특징

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

0개의 댓글