Java ClassLoader(클래스로더)에 관한 기본적인 이해 -1
2022. 2. 18. 04:18ㆍ개발 지식
반응형
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 속성값으로 지정된 폴더에 있는 클래스를 로딩한다.
반응형
'개발 지식' 카테고리의 다른 글
(Database) 인덱스(index)가 뭐고 왜 쓸까? (0) | 2022.02.20 |
---|---|
JAVA - JVM에 대해 알아보자 -1 (0) | 2022.02.18 |
Statement-Level (two-way selection) (0) | 2021.12.05 |
강 타입 언어 (0) | 2021.12.04 |
(JPA) JPA가 뭐야?? 이거 왜 쓰는거야? (0) | 2021.11.18 |