자바 가상 머신-클래스 로더

JVM은 클래스 및 인터페이스를 동적으로로드, 링크 및 초기화하는 프로세스를 관리합니다. 로딩 과정에서JVM finds the binary representation of a class and creates it.

연결 과정에서 loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase. JVM은 기본적으로 연결 프로세스를 위해 런타임 상수 풀에 저장된 기호 테이블을 사용합니다. 초기화는 실제로executing the linked classes.

로더 유형

그만큼 BootStrap클래스 로더는 클래스 로더 계층 구조의 맨 위에 있습니다. JRE의 lib 디렉토리 에있는 표준 JDK 클래스를로드합니다 .

그만큼 Extension 클래스 로더는 클래스 로더 계층의 중간에 있으며 부트 스트랩 클래스 로더의 직계 자식이며 JRE의 lib \ ext 디렉토리에있는 클래스를로드합니다.

그만큼 Application클래스 로더는 클래스 로더 계층 구조의 맨 아래에 있으며 애플리케이션 클래스 로더의 직계 하위입니다. 에 의해 지정된 jar 및 클래스를로드합니다.CLASSPATH ENV 변하기 쉬운.

연결

연결 프로세스는 다음 세 단계로 구성됩니다.

Verification− 이는 생성 된 .class 파일 (바이트 코드)이 유효한지 확인하기 위해 Bytecode Verifier에 의해 수행됩니다. 그렇지 않으면 오류가 발생하고 연결 프로세스가 중단됩니다.

Preparation − 메모리는 클래스의 모든 정적 변수에 할당되며 기본값으로 초기화됩니다.

Resolution− 모든 기호 메모리 참조는 원래 참조로 대체됩니다. 이를 위해 클래스 메서드 영역의 런타임 상수 메모리에있는 기호 테이블이 사용됩니다.

초기화

이것은 클래스 로딩 프로세스의 마지막 단계입니다. 정적 변수에는 원래 값이 할당되고 정적 블록이 실행됩니다.