자바 클래스 로딩 메커니즘 - 클래스 로딩 과정 (준비)

Java 가상 머신 클래스를로드의 전 과정은 다음과 같습니다 :로드, 검증, 준비, 해상도, 초기화. 연결 프로세스를 해결하기 위해 호출 확인, 준비,. 오늘 우리는 대화 할 준비가되어 있습니다.

준비 단계 정식 클래스 변수를위한 메모리를 할당하고 이러한 변수의 변수의 초기 값은 메모리 영역의 할당 방법에 의해 사용되는 스테이지 클래스를 설정한다. 이 단계는 강조 할 필요가 무엇인지의 개념을 혼동하는 경향이있다. 우선, 이번 만 클래스 변수 (수정 정적 변수), 메모리 할당. 인스턴스 변수에 할당되지 않은 객체가 객체로 인스턴스화 될 때 자바 힙의 인스턴스 변수가 할당됩니다. 둘째, 여기에서, 초기 값은 "보통"으로 정의되는 클래스 변수를 가정하여 제로 값의 데이터 유형이다 :

공용 static int 값 = 456;

그러면 초기 값의 준비 단계 이후의 값은 0이 아닌 456이다. 이번에는 자바 방법을 수행하기 시작하지 않고, 프로그램 후 값 'putstatic 명령 컴파일되므로, 클래스 생성자 () 메소드에서 초기화 단계에서 수행되는 동작에 할당 된 값이 저장된다.

그것은 "일반적으로"제로 값 이상, 그것은 상대적으로 낮은 "특별한 경우"를 가지고 있어야 언급 0이 아닌 값입니다 ConstantValue 클래스 속성 필드 속성 테이블 필드가있는 경우, 그는 준비 단계에서 변수 값으로 초기화된다 ConstantValue 상기 값을 가정하면, 속성 값 지정은 다음과 같이 정의된다 :

공공 정적 최종 int 값 = 456;

javac 컴파일러는 ConstantValue 속성 값을 생성 할 때 값이 준비 단계 (456)에 할당한다.

추천

출처blog.csdn.net/huqianlei/article/details/90739024