jvm 클래스 로딩 프로세스: 먼저 로딩을 수행한 다음 클래스 파일의 바이트 스트림에 포함된 정보가 현재 가상 머신의 요구 사항을 충족하는지 확인한 다음 클래스의 정적 변수에 대한 메모리 할당을 준비합니다. 이를 시스템의 초기 값으로 초기화하고 최종적으로 구문 분석하고 초기화합니다.
jvm 클래스 로딩 프로세스:
1. 로딩
jvm은 로딩 시 다음 세 가지 작업을 수행합니다.
1) 클래스 바이트의 정규화된 이름을 통해 클래스의 바이너리를 얻습니다. 스트림
2) 이 바이트 스트림의 정적 저장 구조를 메소드 영역의 런타임 데이터 구조로 변환
3) 메모리 힙의 클래스를 클래스의 데이터로 나타내는 java.lang.Class 객체 생성 액세스 포털
2. 검증
검증, 준비, 파싱의 3단계는 클래스의 바이트코드를 JVM의 실행 상태에 연결하는 연결 프로세스로 볼 수 있습니다.
검증은 클래스 파일이 바이트 스트림에 포함된 정보는 현재 가상 머신의 요구 사항을 충족하며 jvm의 보안을 위협하지 않습니다. 검증에는 주로 다음 측면의 검증이 포함됩니다:
1) 파일 형식 검증, 바이트 스트림이 다음을 준수하는지 확인 클래스 파일의 사양, 현재 버전의 가상 머신에서 처리 가능한지 여부
2) 메타데이터 검증, Java 언어 사양 준수 여부를 확인하기 위해 바이트코드로 설명된 정보의 의미 분석
3) 바이트코드 검증 데이터 흐름 및 제어 스트림 분석을 통해 의미가 합법적이고 논리적인지 확인
4) 기호 참조 확인 이 확인은 구문 분석 단계에서 발생합니다
3. 준비, 클래스의 정적 변수에 대한 메모리 할당 및 초기화 시스템의 초기값으로 설정합니다. final static으로 수정된 변수의 경우 가 사용자 정의 값에 직접 할당됩니다. 다음 예와 같이 준비 단계 이후의 초기 값은 7
public static int a=7
4이 아닌 0입니다. Parsing구문 분석은 상수 풀의 기호 참조를 직접 참조로 변환하는 것입니다. (물리적 메모리 주소 포인터 등)
5. 초기화초기화 단계에서 jvm은 실제로 클래스에 정의된 Java 코드를 실행하기 시작합니다.
1) 초기화 단계는 클래스 생성자를 실행하는 과정입니다.
2) 클래스를 초기화할 때 해당 상위 클래스가 초기화되지 않은 경우 먼저 해당 상위 클래스의 초기화를 트리거해야 합니다.
3) 가상 머신은 클래스의
관련 학습 권장사항:
Java 기본 튜토리얼
위 내용은 JVM 클래스 로딩 프로세스는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!