JVM은 클래스 파일 원리를로드

로드의 개념

소위 부하는 클래스 또는 인터페이스의 바이너리 형식을 발견하는이 클래스 인터페이스의 클래스 또는 객체의 과정의 바이너리 형식의 대표로 구성되어 있습니다.

자바 클래스 로더는 가상 머신에 클래스를로드

적재 링크 초기화 링크가 교정으로 나누어 제조 해결할 수있어서 Java에서는, 클래스 로더는 자바 가상 머신 클래스를로드하기 위해 다음 세 단계를 통해 수행된다.

  • 로드 : 클래스 또는 인터페이스를 찾아 바이너리 데이터에 도입;
  • 링크 : 분석 단계는 선택적이며, 상기 다음의 확인, 제조 공정 및 분석을 수행하는 단계;
    • 확인 : 바이너리 데이터를 가져올 클래스 또는 인터페이스의 유효성을 확인;
    • 제조 : 정적 변수 클래스에 할당되고 수납 공간을 초기화된다;
    • 분석 : 직접 참조로 변환 된 부호;
  • 초기화 : 클래스의 초기화 자바 코드와 정적 변수 정적 자바 코드 블록 활성화.

JVM을로드 클래스

JVM은이 클래스에 의해로드와 그 서브 클래스의 클래스 로더를 달성, 자바 클래스 로더는 자바 런타임 시스템의 중요한 구성 요소입니다. 그것은 런타임에 파일을 찾아 클래스 로딩 클래스에 대한 책임이 있습니다.

자바 응용 프로그램은 클래스 로더를 사용하는

루트 (부트 스트랩에) 로더 및 사용자 정의 로더 (사용자 정의) : 자바 클래스 로더에게 두 가지를 사용하여 응용 프로그램.

  • 자바 API 클래스를 포함하여 어떤 방식으로 기본 클래스 로딩의 루트 로더. 자바 프로그램의 작동 중에 클래스 로더 사용자 정의 설치 될 수 있습니다. 루트 로더 가상 머신의 본질적인 부분.
  • 다른 개체를 인스턴스화 할 수있는 사용자 정의 클래스 로더는 같은, 그것은 가상 컴퓨터에로드 된 클래스 파일로 컴파일 후, 자바 언어로 작성되는 가상 머신에 내재하지 않고,.

다음과 같이 자바 클래스 로더의 구조는 다음과 같습니다

        Bootstrap(根装载器)  
                |   
        Extension (扩展装载器)  
                |  
             System  
                |  
              UserDefine1
                 /   \  
        UserDefine2  UserDefine3  
                            |   
                      UserDefine4  

자바의 클래스 로딩 모델

자바의 클래스 로딩 모델은 프록시 (위임) 모델이다. 때 클래스를 로딩 JVM 클래스 로더 주장 CL (클래스 로더), CL 그의 부모 로더에 첫 번째 클래스 로더 요청.

부모 부하가로드되지이며,이 클래스를로드 할 수 없습니다 경우에만, CL 클래스를로드 할 수있는 기회를 주어졌다. 따라서, 모든 클래스 로더 기관의 관계는 트리의 관계를 구성한다. 트리의 루트는 루트 클래스 로더 (부트 스트랩 클래스 로더), 그것이 JVM에 "널 (null)"로 표현된다.

루트 클래스 로더 로더를 제외하고 하나의 부모 로더가 있습니다. 로더를 만들 때 명시 적으로 부모 로더를 제공하지 않을 경우, 시스템은 부모와 같은 JVM 로더 로더로 설정됩니다.

다양한 클래스 로더의 자세한 설명

다양한 클래스 로더에 대한 상세 설명은 다음과 같습니다

  1. 로더 (부트 스트랩)에 루트 :로드 로더, 그것은 JVM 구현의 일부이고, 부모없는 경우 sun.boot.class.path 코어 코드 기반의 조작 하중.

  2. 확장 (확장) 로더 : 상속 부모 루트 로더 로더, 로더는 루트 운영 체제는, 클래스 로더는, 순수 자바 코드에서 구현에 대해 실행되지 않을 수있는 java.ext.dirs에서 (확장 디렉토리)로드 코드입니다.

  3. 시스템 (시스템이나 응용 프로그램) 로더 : 확장을위한 로더 로더, 우리 모두는 환경 변수 (CLASSPATH)을 설정하기 위해 JDK를 설치하면, 클래스 로더는 java.class.path를 (CLASSPATH 환경 변수)에서로드 것을 알고있다 또한, 순수 자바 코드에서 구현되는 코드, 동안 기본 또는 사용자 정의 클래스 로더의 상위 로더.

  4. 애플릿 (애플릿) 로더 : 사용자의 네트워크에 특정 디렉토리를 지정 로더 시스템 로더는, 애플릿 코드를로드합니다.

추천

출처www.cnblogs.com/zxfei/p/11228880.html