클래스 로더
이름을 알고 있는 특정 클래스에 대한 정의를 가져오는 역할을 수행
- 부트스트랩 클래스 로더(H/W 수준)
JVM에서 라이브러리로 취급되는 것들을 로드
- 플랫폼(S/W - H/W) 클래스 로더(기존 - 확장 클래스 로더)
클래스 라이브러리 로드(개념상 하드웨어, 어플리케이션 중간의 것들이 로드)
- 애플리케이션 클래스 로더
user mode 수준
JAVA 클래스 로딩
- 클래스 로딩 및 링킹 과정이 모두 *런타임*에 이루어짐
- 실행 성능이 일부 저하될 수 있으나 높은 확장성과 유연성을 제공하는 근간
인터페이스만 맞으면 런타임에 구현 클래스를 경정하지 않을 수 있음
클래스 로더는 실행할 프로그램 코드를 네트워크로 수신하는 것도 가능(확장성의 측면에서 엄청남 배포, 업데이트)
- 해석(Resolution) 단계는 동적 바인딩을 지원할 목적으로 초기화 후로 지연될 수 있음
연산 여부에 따라 필요한 파일만 로딩할 수 있음(런타임 바인딩을 늦게 하겠다)
Loading
Linking ( Verification , Prearation , Resolution) - 사용 준비(JVM)
Using(Initialization , Using) - 사용(new연산) (생성자 호출 ...)
Unloading (JVM) - GC
준비 및 해석
- java.lang.Class 인스턴스(메타 데이터)가 힙 영역에 생성되고 클래스 변수(정적 멤버) 메모리를 0으로 초기화
- 생성자 호출 전 상태(new 연산 전)
Heap 영역에 객체 생성
- JVM은 객체 저장을 위한 메모리 공간을 확보 후 0으로 초기화
- 객체 초기화를 위한 구성설정 실시
- 생성자 호출
'JAVA&스프링' 카테고리의 다른 글
| JAVA 스택 영역(Stack area) (0) | 2025.06.13 |
|---|---|
| JAVA JVM 런타임 데이터 영역 & 메소드 영역/데이터 영역(Method area) (0) | 2025.06.13 |
| JAVA JVM 구성요소 정리 (0) | 2025.06.13 |
| JAVA와 C++ 메모리 관리 차이 (0) | 2025.06.13 |
| 자바(JAVA) this 정리 (0) | 2025.06.12 |