[jvm 학습 노트] - 클래스 로드 과정

3076 단어
JVM 클래스 로 딩 과정
로드 = > 검증 = > 준비 = > 해석 = > 초기 화 5 단계 에서 실행 되 는 구체 적 인 동작
로드
로 딩 단계 에서 가상 머 신 은 3 가지 일 을 완성 해 야 합 니 다. 1. 하나의 클래스 의 전체 제한 이름 을 통 해 이러한 바 이 너 리 바이트 흐름 을 정의 합 니 다. 2. 이 바이트 흐름 이 대표 하 는 정적 저장 구 조 를 방법 구역 으로 전환 시 킬 때 데이터 구조 3. 메모리 에서 이 종 류 를 대표 하 는 것 을 생 성 합 니 다. java.lang.class 대상, 방법 구역 과 같은 각종 데이터 의 접근 입구
클래스 로 딩 과정의 다른 단계 에 비해 하나의 비 배열 류 (배열 류 는 jvm 가상 컴퓨터 에서 직접 만 든 것) 의 로 딩 과정 (로 딩 단계 에서 클래스 의 바 이 너 리 바이트 흐름 을 가 져 오 는 동작) 은 개발 자 들 이 통제 할 수 있 는 가장 강 한 것 이다. 로 딩 단 계 는 시스템 이 제공 하 는 유도 류 로 딩 기 를 사용 하여 완성 할 수 있 고 개발 자 들 이 사용자 정의 로 딩 기 를 사용 하여 완성 할 수 있 기 때문이다.개발 자 는 클래스 로 더 를 정의 하여 바이트 흐름 을 제어 할 수 있 습 니 다.
로 딩 단계 와 연결 단계 의 일부 내용 은 교차 하여 진행 된다 (예 를 들 어 일부 바이트 파일 의 검증 동작). 로 딩 단계 가 완성 되 지 않 았 고 연결 단계 가 이미 시작 되 었 을 수도 있 지만 로 딩 단계 에 끼어 진행 중인 동작 은 연결 단계 의 내 용 에 속 하 며 이 두 단계 의 시작 시간 은 여전히 고정된 선후 순 서 를 유지한다.
검증 하 다.
인증 은 연결 단계 의 첫 번 째 단계 입 니 다. 이 단계 의 목적 은 Class 파일 의 바이트 흐름 에 포 함 된 정보 가 현재 가상 컴퓨터 의 요구 에 부합 되 고 가상 컴퓨터 자체 의 안전 에 해 를 끼 치지 않도록 하 는 것 입 니 다.
java            ,        (            ),         ,    Class         java      ,                   Class  ,              ,         ,                  ,         ,                     

검증 단 계 는 대체적으로 다음 네 가지 검사 동작 을 완성 할 것 이다. 파일 형식 검증, 메타 데이터 검증, 바이트 코드 검증, 기호 참조 검증 이다.
1. 파일 형식 검증 첫 번 째 단 계 는 바이트 흐름 이 Class 파일 형식 규범 에 부합 되 는 지 검증 하고 현재 버 전의 가상 컴퓨터 에 의 해 처 리 될 수 있 는 지 검증 해 야 합 니 다.2. 메타 데이터 검증 두 번 째 단 계 는 바이트 코드 가 설명 한 정 보 를 의미 화 분석 하여 설명 한 정보 가 자바 음성 규범 에 부합 하도록 하 는 것 이다.3. 바이트 코드 검증 세 번 째 단 계 는 전체 검증 과정 에서 가장 복잡 한 단계 로 주로 데이터 흐름 과 통제 흐름 분석 을 통 해 프로그램의 의미 가 합 법 적 이 고 논리 에 부합 되 는 것 을 확인한다.이 단 계 는 이러한 방법 체 를 검사 분석 하여 방법 이 운행 할 때 가상 컴퓨터 의 안전 에 해 를 끼 치 는 시간 을 확보 할 것 이다.4. 기호 참조 검증 마지막 단계 의 검사 가 가상 컴퓨터 에서 기호 인용 을 직접 인용 으로 바 꿀 때 이 전환 동작 은 연결 단계 의 세 번 째 단계 에서 분석 단계 에서 발생 한다.
준비 하 다.
준비 단 계 는 클래스 변수 에 정식으로 메모 리 를 할당 하고 초기 값 으로 설정 하 는 단계 입 니 다. (이 단 계 는 할당 이 아 닌 초기 값 으로 만 설정 합 니 다) 이 변수 들 이 사용 하 는 메모 리 는 모두 방법 영역 에서 분 배 됩 니 다. 이 때 메모리 분 배 는 클래스 변수 (static 수식 변수) 만 포함 하고 인 스 턴 스 변 수 는 포함 되 지 않 습 니 다.실례 변 수 는 대상 이 실례 화 될 때 대상 과 함께 자바 더미 에 분 배 됩 니 다.그리고 여기 서 말 하 는 초기 화 는 일반적으로 데이터 형식의 0 값 을 가리킨다.
해석 하 다.
분석 단 계 는 가상 컴퓨터 가 상수 탱크 안의 기호 인용 을 직접 인용 으로 바 꾸 는 과정 으로 주로 네 가지 유형의 인용 해석 을 포함한다.클래스 나 인터페이스의 해석, 필드 해석, 방법 해석, 인터페이스 방법 해석.
java   (      )     (.java)   class  (.class),         A     B ,           ,       B    ,       ,      。          ,        ,           ,A            B   ,       ! 

초기 화
클래스 초기 화 단 계 는 클래스 로 딩 과정의 마지막 단계 입 니 다. 앞의 클래스 로 딩 과정 에서 로 딩 단계 에서 개발 자 들 이 사용자 정의 클래스 로 딩 기 를 사용 할 수 있 는 것 을 제외 하고 다른 동작 은 모두 가상 컴퓨터 가 주도 하고 제어 하 며 초기 화 단계 에 이 르 러 서 야 실행 클래스 에서 정의 하 는 자바 프로그램 코드 를 시작 합 니 다.준비 단계 에서 변 수 는 초기 값 을 한 번 지불 한 적 이 있 고 초기 화 단계 에 서 는 프로그래머 의 코드 에 따라 값 을 부여 합 니 다. 초기 화 단 계 는 실행 류 의 구조 기 할당 입 니 다.이 자원 들 은 static {} 블록, 구조 함수, 부모 클래스 의 초기 화 등 이 있 습 니 다.
           ,        ,                 ,   GC  。

좋은 웹페이지 즐겨찾기