1.loadClass, 클래스 로딩 요청이 오면 먼저 캐시에서 클래스 객체를 찾습니다.
있는 경우 직접 반환됩니다. 그렇지 않은 경우 이러한 유형의 로딩의 상위 로더에 전달됩니다. 로드할 상위 항목이 없으면 최상위 부트 로더에 의해 로드됩니다. 여전히 찾을 수 없으면 findClass()를 사용하여 로드하세요.
2. FindClass
클래스 바이트코드를 이름이나 위치별로 로드한 다음 필요하면 DefineClass를 사용하세요. ClassLoader를 사용자 정의하려면 이 메소드를 다시 작성해야 합니다.
3.defineClass
defineClass() 메소드는 바이트 스트림을 JVM에서 인식할 수 있는 Class 객체로 구문 분석하는 것입니다(이 메소드의 논리는 ClassLoader에서 구현되었습니다). 클래스 파일을 통해 객체를 생성하는 경우, 클래스 객체는 다른 메소드를 통해서도 인스턴스화할 수 있습니다. 예를 들어 네트워크를 통해 바이트코드 클래스를 수신한 다음 이를 바이트 스트림으로 변환하여 해당 Class 객체를 생성하는 경우가 일반적입니다. DefineClass() 메소드는 일반적으로 함께 사용됩니다. 일반적으로 클래스 로더를 커스터마이징할 때 클래스 로더의 findClass() 메서드를 직접 재정의하고 로드할 클래스의 바이트코드를 얻은 후 이를 스트림으로 변환합니다. 그런 다음 DefineClass() 메소드를 호출하여 클래스의 Class 객체를 생성합니다. 간단히 말하면 클래스 파일을 Class 객체로 변환하는 것입니다.
4.resolveClassClass 객체를 사용하여 생성한 후 동시에 해결도 가능합니다.
앞서 링크 단계에서는 주로 바이트코드 검증, 메모리 할당, 클래스 변수 설정, 바이트코드 파일의 심볼 참조를 직접 참조로 변환한다고 말씀드렸습니다.
1. 간단합니다. 기본 개념만 이해하면 다양한 상황에 적합한 애플리케이션을 작성할 수 있습니다. 2. 객체 지향 3. 배포, Java는 네트워크 지향 언어입니다. 4 . 견고성, Java는 메모리 관리를 위한 자동 가비지 수집을 제공하여 프로그래머가 메모리를 관리할 때 쉽게 오류가 발생하는 것을 방지합니다. 5. 보안. 네트워크 및 분산 환경에서 사용되는 Java는 바이러스 침입을 방지해야 합니다. 6. 아키텍처 중립적이며 Java 런타임 시스템이 설치되어 있는 한 모든 프로세서에서 실행될 수 있습니다. 7. 이식성, Java는 네트워크의 다른 시스템에 쉽게 이식될 수 있습니다. 8. 해석 및 실행, Java 인터프리터는 Java 바이트코드를 직접 해석하고 실행합니다.
위 내용은 Java 클래스 로더의 일반적인 메소드는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!