>Java >java지도 시간 >JVM 클래스 로딩 프로세스는 무엇입니까

JVM 클래스 로딩 프로세스는 무엇입니까

coldplay.xixi
coldplay.xixi원래의
2020-08-12 15:08:123255검색

jvm 클래스 로딩 프로세스: 먼저 로딩을 수행한 다음 클래스 파일의 바이트 스트림에 포함된 정보가 현재 가상 머신의 요구 사항을 충족하는지 확인한 다음 클래스의 정적 변수에 대한 메모리 할당을 준비합니다. 이를 시스템의 초기 값으로 초기화하고 최종적으로 구문 분석하고 초기화합니다.

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) 초기화 단계는 클래스 생성자를 실행하는 과정입니다. () 메서드. 클래스 생성자() 메소드는 컴파일러가 클래스 내 모든 클래스 변수의 할당 동작을 자동으로 수집하고 정적 명령문 블록(static block)의 명령문을 병합하여 생성됩니다.

2) 클래스를 초기화할 때 해당 상위 클래스가 초기화되지 않은 경우 먼저 해당 상위 클래스의 초기화를 트리거해야 합니다.

3) 가상 머신은 클래스의 () 메서드가 다중 스레드 환경에서 올바르게 잠기고 동기화되는지 확인합니다.

JVM 클래스 로딩 프로세스는 무엇입니까관련 학습 권장사항:
Java 기본 튜토리얼

위 내용은 JVM 클래스 로딩 프로세스는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.