jvm 클래스 캐리어 기초 분석
클래스 로더(classloader)는 클래스의class 파일을 JVM 가상 시스템에 로드하는 데 사용됩니다.JVM에는 부트 클래스 로더(bootstrapclassloader), 확장 클래스 로더(extensionsclassloader), 응용 클래스 로더(applicationclassloader) 등 세 가지 로더가 있으며, 자바를 계승할 수 있습니다.lang. ClassLoader 클래스에서 사용자 정의 로더를 만듭니다.
[클래스 로더 종류]
1. 부트 스트랩(Boot Strap): Java 클래스가 아닙니다. C++ 언어로 작성되고 JVM 커널에 내장되어 있으며 JNI(Java Native Interface)를 사용하여 네이티브 코드를 호출합니다.부트 클래스 로더는 코어의 Java 라이브러리(예: 비트 JAVA_)를 로드합니다.HOME/jre/lib 아래의 rt.jar 파일입니다. 이 jar 파일은 다음과 같은 일반적인 종류를 포함합니다.
java.lang.System
java.util.HashMap
2. 확장 클래스 로더(ExtClassLoader): java에서 상속됩니다.lang. ClassLoader 클래스, 확장 경로 아래의jar 파일을 불러오는 데 사용, 확장 경로는 JAVA_HOME/jre/lib/ext3. 클래스 로더(AppClassLoader): 자바에서 상속됩니다.lang. ClassLoader 클래스,classpath 아래의 클래스를 불러옵니다.크게 웃다
[클래스 캐리어의 위탁 메커니즘]
1. 프로그램이 클래스를 불러와야 할 때 BootStrap, ExtClassLoader, AppClassLoader의 순서에 따라 해당하는 경로 아래에 필요한 클래스의 바이트 파일을 불러옵니다.
2. 사용자 정의 클래스를class 파일로 컴파일한 후jar 패키지로 만들어 JAVA_HOME/jre/lib/ext 경로입니다.클래스 로더가 로드될 때 ExtClassLoader 로더를 사용하여 JAVA_홈/jre/lib/ext 경로로 불러옵니다. AppClassLoader 로더를 사용하여classpath에서 불러오지 않습니다.
3. BootStrap, ExtClassLoader, AppClassLoader 순서대로 클래스 로더를 사용하고 클래스 로더를 시도하는 데 실패한 후 클래스를 던져 이상을 찾을 수 없습니다:java.lang.ClassNotFoundException
[데모 적용]
1. BootStrap: C++로 작성, JVM 커널에 내장, Java 클래스가 아님
ClassLoader loader = System.class.getClassLoader();
System.out.println(loader); //null
2. AppClassLoader: AppClassLoader 로드기를 사용하여 classpath 아래의 클래스를 로드합니다.
ClassLoader loader = ClassLoaderTest.class.getClassLoader();
System.out.println(loader.getClass().getName());
//sun.misc.Launcher$AppClassLoader
3. ExtClassLoader: JAVA_ 로드홈/jre/lib/ext 경로 아래의 자바 클래스를 찾으면classpath에 불러오지 않습니다.C:\ProgramFiles\Java\jdk1.7.0\jre\lib\ext\excelsoft로 내보내기 위해 사용자 정의 Hello 클래스를 작성합니다.jar 경로.
ClassLoader loader = Hello.class.getClassLoader();
System.out.println(loader.getClass().getName());
//sun.misc.Launcher$ExtClassLoader
===============================클래스 캐리어는 상대적으로 복잡한 화제로 입문 이해만 합니다!
총결산
이상은 본고가 jvm류 캐리어의 기초 해석에 관한 모든 내용입니다. 여러분께 도움이 되기를 바랍니다.관심 있는 친구는 본 사이트의 다른 관련 주제를 계속 참고할 수 있습니다. 부족한 점이 있으면 댓글로 지적해 주십시오.여러분의 본 사이트에 대한 지지에 감사 드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 문자열 풀우리는 Java에서 문자열이 힙 메모리 영역에 저장된다는 것을 알고 있습니다. 이 힙 메모리 내부에는 String Pool이라는 특정 메모리 영역이 있습니다. 문자열 프리미티브를 생성하면 자바 문자열의 불변성 덕분에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.