Java ClassLoader(클래스로더)에 관한 기본적인 이해 -1

2022. 2. 18. 04:18Java

반응형

Java ClassLoader란?


자바 클래스 로더는 JVM에서 핵심적인 역할을 한다.

JVM이 뭔지 상세히 알고 싶다면 아래 글로 오길 바란다.

 

자바 클래스로더는 JVM으로 동적 로드하는 자바 런타임 환경(JRE)의 일부이다.

이름에서 알 수 있듯이 '클래스'를 '로드'하는 녀석이다. 어떻게? 동적으로!

(동적 링크 라이브러리에서 필요시 CPU 호출에 의해 링크, 적재 된다.)

 

일반적으로 클래스들은 요청 시 한 차례만 로드된다. 자바 런타임 시스템은 클래스로더 덕분에 파일과 파일 시스템에 대해서 알 필요가 없다.

(일방적으로 이 역할을 클래스로더에게 위임한다.)

 

JVM이 시작되면 먼저 3개의 클래스 로더들이 사용된다.

  • 부트스트랩 클래스 로더
  • 확장 클래스 로더
  • 어플리케이션 클래스 로더

부트스트랩 클래스 로더는 3가지 클래스로더 중 최상위 클래스로서, <JAVA_HOME>/jre/lib 디렉터리에 위치한 핵심 자바 라이브러리들(JDK 클래스 파일)을 불러들인다. Native C로 구현되어 있다.

 

확장 클래스 로더는 확장 디렉토리 <JAVA_HOME>/jre/lib/ext 폴더나 java.ext.dirs 환경 변수로 지정된 폴더에 있는 클래스 파일을 로딩한다.

 

어플리케이션 클래스 로더 -classpath(또는 -cp)나 JAR 파일 안에 있는 Manifest 파일의 Class-Path 속성값으로 지정된 폴더에 있는 클래스를 로딩한다.

 

 

 

반응형

'Java' 카테고리의 다른 글

logging이란?  (0) 2022.02.23
(Java) JDBC란?  (0) 2022.02.20
JAVA - JVM에 대해 알아보자 -1  (0) 2022.02.18
(JPA) JPA가 뭐야?? 이거 왜 쓰는거야?  (0) 2021.11.18
(Java) InetSocketAddress, HttpHandler 문법 및 사용  (1) 2021.07.05