종이로 읽으니 세세하게 해야겠다는 생각이 든다
--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. 클래스 로딩의 특징
네임스페이스 , 두 개의 동일한 클래스 이름이 동일한 네임스페이스에 나타날 수 없습니다.
2), Java보안
샌드박스모델최상위 클래스 로더 보안을 달성하기 위해 메커니즘에 따라 Java는 기본적으로 "상위 위임 로딩 체인" 구조를 채택합니다. 3. 클래스를 로드하는 방법에는 세 가지가 있습니다.
1) 애플리케이션이 명령줄에서 시작되면 초기화됩니다. 그리고 JVM에 의해 로드됩니다.
2) 클래스를 통한 동적 로딩for
Name() 메소드.3) ClassLoader().loadClass() 메소드를 통한 동적 로딩.
이 세 가지 로딩 방법은 정적
코드 블록의 실행에 영향을 미칩니다.다음 예:
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의 하위 클래스를 통해 클래스를 동적으로 로드합니다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();
}
}
}
위 내용은 Java 클래스 로딩 메커니즘 ClassLoder에 대한 자세한 설명(그림 및 텍스트)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!