> Java > java지도 시간 > java--클래스 로딩 프로세스에 대한 자세한 설명

java--클래스 로딩 프로세스에 대한 자세한 설명

php是最好的语言
풀어 주다: 2018-08-10 13:57:48
원래의
2233명이 탐색했습니다.

1. Loading

1. 클래스의 정규화된 이름을 통해 이 클래스를 정의하는 바이너리 바이트 스트림을 얻습니다.

2. 이 바이트 스트림이 나타내는 정적 저장 구조를 메소드 영역의 런타임 데이터 구조로 변환합니다.

3. 메소드 영역에서 이 클래스의 다양한 데이터에 대한 액세스 항목으로 메모리에 이 클래스를 나타내는 java.lang.Class 객체를 생성합니다.

2. 확인

1. 파일 형식 확인

바이트 스트림이 클래스 파일 형식 사양을 준수하고 현재 버전의 가상 머신에서 처리할 수 있는지 확인합니다.证 2. Metal 데이터 검증 yuan 에 설명된 정보가 Java 언어 사양의 요구 사항과 일치하는지 확인하기 위해 바이트 코드 초

정보의 의미 분석.

3. 바이트코드 검증

데이터 흐름과 제어 흐름 분석을 통해 프로그램 의미가 적법하고 논리적인지 확인. 메타데이터 정보의 데이터 유형에 대한 2차 검증 후, 이 단계에서 클래스 메서드를 검증 및 분석하여 검증된 클래스의 메서드가 런타임 중에 가상 머신의 보안을 위협하는 이벤트를 발생시키지 않는지 확인합니다. .

  4. 기호 참조 확인

                                                                                       수행

클래스 자체 이외의 정보에 대한 일치 확인(상수 풀의 다양한 기호 참조)이 발생합니다. 3. 준비

클래스 변수에 대한 메모리를 정식으로 할당하고 클래스 변수의 초기값을 설정하는 단계입니다. 이러한 변수에 사용되는 메모리는 메서드 영역에 할당됩니다.

          이때 메모리 할당에는 인스턴스 변수가 아닌 클래스 변수(정적으로 수정된 변수)만 포함되며, 인스턴스 변수는 초기화 시 객체와 함께 Java 힙에 할당됩니다. 클래스 변수를 최종 초기화 값에 할당하지 않고 데이터 유형의 0 값에만 할당합니다. 예를 들어, public static int value=123; 준비 단계에서 값은 int의 0 값, 즉 123이 아닌 0에만 할당됩니다(123의 값은 프로그램이 컴파일될 때까지 할당되지 않습니다).

Four. Parsing

구문 분석 단계는 가상 머신이 상수 풀의 기호 참조를 직접 참조로 대체합니다. ㅋㅋㅋ     

                                                        .

직접 참조는 대상을 직접 가리킬 수 있는 포인터, 상대 오프셋 또는 대상을 간접적으로 찾을 수 있는 핸들입니다.

5. 초기화

정의된 자바 프로그램 코드가 실제로 실행되기 시작하는 단계입니다. 이 단계에서 프로그래머는 프로그램이 작성한 주관적인 계획을 통해 클래스 변수 및 기타 리소스를 초기화합니다.

실제 할당은 이 단계에서 완료됩니다

즉, 준비 단계에서 public static int 값=123입니다. 이 단계에서 값은 이제 123에 할당됩니다

관련 권장 사항:

프로세스 JVM의 클래스 로딩 자세한 그래픽 설명

자바에서 클래스 로딩 순서 분석 (면접질문에서 자주 사용)

위 내용은 java--클래스 로딩 프로세스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿