티스토리 뷰
자바 코드 수행 과정을 보면 이렇다.
테두리 친 부분이 JVM 영역이고 하나씩 봐야겠다.
클래스 로더(Class Loader)
▶ 특징
1) 계층구조 : 클래스 로더끼리 부모-자식 관계를 이루어 계층구조 (최상위 = 부트스트랩)
2) 위임모델 : 클래스 로더끼리 로드 위임 (상위클래스 로더 확인 → 상위클래스 있다면 해당 클래스 사용)
3) 가시성 제한 : 하위 클래스 로더는 상위클래스 로더의 클래스를 찾을 수 있지만 상위는 하위를 찾을 수 없음.
4) 언로드 불가 : 클래스 로더는 클래스 로드만 가능 (but 현재 클래스 로더 삭제 → 새로운 클래스 로더 생성하는 방법으로 사용)
▶ 로드된 클래스들을 보관하는 네임스페이스 갖음.
▶ 클래스 로드 시 이미 로드된 클래스인지 확인 위해서 네임스페이스에 보관된 FQCN(Full Qualified Class Name) 기준으로 클래스 찾음.
(FQCN이 같더라도 네임스페이스가 다르면 (=다른 클래스 로더가 로드한 클래스라면) 다른 클래스로 간주)
(FQCN : 클래스가 속한 패키지명을 모두 포함한 이름 (java.lang.String s = new java.lang.String();)
▶ 클래스 로더가 클래스 로드를 요청 받으면 다음 순서로 클래스 여부 확인.
클래스 로더 캐시(cash) → 상위 클래스 로더 → 자기자신
▶ 클래스 로더 위임 모델
1) Bootstrap Class Loader : JVM 기동 시 생성 / Object 클래스와 자바 API 로드 / Native Code로 구현되어 있음.
2) Extension Class Loader : 기본 자바 API를 제외한 확장 클래스 로드 (보안 확장 기능 로드)
3) System Class Loader : 애플리케이션 클래스 로드 / 사용자가 지정한 $CLASSPATH 내의 클래스 로드
4) User-Defined Class Loader : 애플리케이션 사용자가 직접 코드 상에서 생성해 사용하는 클래스 로더
▶ 클래스 로드 과정
1) Loading
- 클래스를 파일에 가져와서 JVM 메모리에 로드
2) Verifying(검증)
- 읽어들인 클래스가 자바 언어 명세 및 JVM 명세에 명시된 대로 잘 구성되어 있는지 검사
- 클래스 로드 과정 중 가장 까다로운 검사를 수행하는 과정(가장 복잡, 시간 오래 소요)
3) Preparing(준비)
- 클래스가 필요로 하는 메모리를 할당
- 클래스에서 정의된 필드, 메소드, 인터페이스들을 나타내는 데이터 구조 준비
4) Resolving(분석)
- 클래스의 상수풀 내 모든 심볼릭 레퍼런스 → 다이렉트 레퍼런스로 변경 → 참조된 모든 클래스 로딩
( * 심볼릭 레퍼런스 : 참조하고자 하는 대상의 이름만으로 참조관계 구성
* 다이렉트 레퍼런스 : 이름에 맞는 객체의 주소를 찾아서 연결 )
5) 초기화
- 클래스 변수들을 적절한 값으로 초기화, Static initializer 수행
Reference
'JAVA' 카테고리의 다른 글
JVM - 3 (Execution Engine, 실행 엔진) (0) | 2018.10.25 |
---|---|
JVM - 2 (Runtime Data Area, 런타임 데이터 영역) (0) | 2018.10.24 |
6장. 클래스 feat. 이것이 자바다 (0) | 2018.05.29 |
배열 속 랜덤 값 구하기(Collections.shuffle) (0) | 2018.02.07 |
이클립스 톰캣에러 - Server Tomcat v8.5 Server at localhost failed to start (STS, Maven, GitHub) (1) | 2018.02.06 |
- Total
- Today
- Yesterday
- 더 나은 내일
- FrogJmp
- 기능개발
- 최솟값
- 다음 맵 api
- AWS
- 타겟 넘버
- 예매 알림
- K번째수
- json
- 맵 api
- 안드로이드 스튜디오
- 쇠막대기
- 124 나라의 숫자
- 스프링 부트
- 객체지향과 디자인패턴
- 문자열 내 마음대로 정렬하기
- 알고리즘
- 완주하지 못한 선수
- java
- 프로그래머스
- 자바
- API
- 텔레그램
- 카카오인턴
- cgv
- 노션트렐로광고X
- codility
- 파이팅코리아
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |