java - 类加载后隔离问题
巴扎黑
巴扎黑 2017-04-18 09:45:42
0
3
377

我知道在JVM识别类的方式是通过classLoader和全类名识别的,那么当一个类由两个不同的classLoader加载后。
对这个类初始化时,JVM会选择对哪个类进行初始化?其依据是什么?
两个classLoader加载的Class对象在内存中的位置有什么区别吗?

例如:

有人提出看工程结构,我把加载器和被加载对象的结构放出来吧:


被加载的类也是在classpath下的

巴扎黑
巴扎黑

모든 응답(3)
阿神

간단히 말하면

으아아아

자세한 내용은 검색엔진에서 "부모 위임 모델"로 검색해 보세요.

Ty80

주제를 벗어나면 이 코드는 매우 깔끔하고 편한 것 같아요

PHPzhong

여기서 초기화는 클래스 로딩(<clinit> 호출)의 마지막 단계로 이해될 수 있습니다. 두 개의 서로 다른 ClassLoad가 로드되면 <clinit>이 두 번 실행되고 로드된 Class 개체가 메서드에 포함됩니다. 영역(영구 생성)이며 두 개의 Class 개체에 해당합니다.

메소드 코드가 오버로드된 경우 최종 결과는 2개 findClass가 되어야 합니다. 위 코드는 true 파일이 최종적으로 class 아래에 있으므로 AppLoader에 넘겨져 로드됩니다. 효과를 표시하려면 classpath 파일을 class 이외의 위치로 이동해야 합니다. 원본 포스터에 classpath 메서드 loadClass가 오버로드되었습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿