>Java >java지도 시간 >Java 클래스 로딩 메커니즘 ClassLoder에 대한 자세한 설명(그림 및 텍스트)

Java 클래스 로딩 메커니즘 ClassLoder에 대한 자세한 설명(그림 및 텍스트)

黄舟
黄舟원래의
2017-03-15 13:11:552105검색

종이로 읽으니 세세하게 해야겠다는 생각이 든다 --Lu You 운하에게 얼마나 맑은지 물어보세요. 그래서 생수의 원천이 있습니다 - Zhu Xi


클래스의 전체 수명은 메모리에 로드된 시점부터 메모리에서 언로드되는 시간 주기 에는 로딩, 검증(Verification), 준비(Preparetation), 해결(Resolution),

초기화(Initialization) 및 사용(Using) , 언로드(Uploading)의 7단계. 유효성 검사 준비 및 구문 분석을 연결이라고 합니다.





1. 로드된 아키텍처

1), Bootstrap 클래스 로더는 주로 핵심 api또는 -Xbootstrap 옵션으로 지정된 jar 패키지가 작업에 포함됩니다. 2) Extension ClassLoader 확장 클래스 로더, 주로 java_home/lib/ext 아래의 jar 패키지를 담당합니다.

3) App CLassLoader 시스템 클래스 로더, 주로 Java -classpath/를 담당합니다.

디렉토리에 클래스 및 jar 패키지 로드 4) 프로그램 실행 중에 Java.

lang

의 하위 하위 항목을 통해 UserCustom ClassLoader 사용자 정의 클래스 로더. Classloader 클래스 동적 로딩 클래스

2. 클래스 로딩의 특징

1) 각 ClassLoader는 자신의

네임스페이스 , 두 개의 동일한 클래스 이름이 동일한 네임스페이스에 나타날 수 없습니다.

2), Java보안

샌드박스

모델최상위 클래스 로더 보안을 달성하기 위해 메커니즘에 따라 Java는 기본적으로 "상위 위임 로딩 체인" 구조를 채택합니다. 3. 클래스를 로드하는 방법에는 세 가지가 있습니다.

1) 애플리케이션이 명령줄에서 시작되면 초기화됩니다. 그리고 JVM에 의해 로드됩니다.

2) 클래스를 통한 동적 로딩for

Name() 메소드.

3) ClassLoader().loadClass() 메소드를 통한 동적 로딩.

이 세 가지 로딩 방법은 정적

코드 블록의 실행에 영향을 미칩니다.

다음 예:

public class MyHello {    static    {
        System.out.println("hello word");    }
}public class Hello {    public static void main(String[] args) {
        ClassLoader loader=Hello.class.getClassLoader();        
        try {            
        //静态代码块不运行            
        //loader.loadClass("Test.MyHello");            
        //静态代码块运行输出hello world            
        //Class.forName("Test.MyHello");            
        //静态代码块不运行            
        //Class.forName("Test.MyHello", false, loader);            
        //静态代码块运行输出hello world            
        Class.forName("Test.MyHello", true, loader);        
        } 
        catch (ClassNotFoundException e) {            
        // TODO 自动生成的 catch 块            
        e.printStackTrace();       
         }
    }
}

1. ClassLoader 클래스 로딩 아키텍처

1) 부트스트랩 클래스로더는 클래스 로더를 시작합니다. 클래스 로더는 주로 java_home/lib 또는 -Xbootstrap 옵션에 지정된 jar 패키지 아래의 핵심 API를 로드하는 일을 담당합니다.

2) Extension ClassLoader 확장 클래스 로더, 주로 java_home/lib/ext 아래의 jar 패키지를 담당합니다.

3) App CLassLoader 시스템 클래스 로더, 주로 Java -classpath/ Loading을 담당합니다.

디렉토리에 있는 클래스 및 jar 패키지 4) UserCustom ClassLoader 사용자 정의 클래스 로더는 프로그램 실행 중에 Java.lang.Classloader의 하위 클래스를 통해 클래스를 동적으로 로드합니다

위 내용은 Java 클래스 로딩 메커니즘 ClassLoder에 대한 자세한 설명(그림 및 텍스트)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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