클래스 JVM 에서 의 실행 과정

2215 단어 자바
자바 원본 파일(.자바)이 바이트 코드(.class)파일 로 컴 파일 된 후 자바 데모 명령 을 사용 하면 데모 류 의 main()방법 으로 자바 가상 컴퓨터(jvm)를 시작 합 니 다.JVM 을 메모리 에 불 러 온 후 데모 의 main()방법 으로 작업 을 시작 합 니 다.JVM 은 특정한 순서에 따라 세 가지 일 을 할 것 입 니 다.로드,링크,초기 화 입 니 다.
    1.로 딩
            JVM 은 자바 류 의 바 이 너 리 형식 을 메모리 에 불 러 오고 그 를 메모리 에 캐 시 하여 나중에 사용 할 수 있 도록 합 니 다.지정 한 클래스 를 찾 지 못 하면 이상 classNotFound 를 던 져 프로 세 스 가 여기에서 끝 납 니 다.오류 없 이 자바 더미 에 이 종 류 를 대표 하 는 자바.lang.Class 대상 을 계속 생 성하 여 방법 영역 데이터 의 접근 입 구 를 만 듭 니 다.
    2.링크
           이 단계 에서 세 가지 일 을 합 니 다:검증,준비,해석(선택 가능).검증 은 JVM 이 자바 언어 와 JVM 의 의미 에 따라 이 바 이 너 리 형식 을 검사 하 는 것 입 니 다.예 를 들 어 컴 파일 된 클래스 파일 을 변경 하면 이 클래스 파일 을 사용 할 수 없 을 수도 있 습 니 다.준비 란 실행 할 지정 한 클래스 를 말 합 니 다.준비 단 계 는 변수 에 메모 리 를 할당 하고 정적 변 수 를 초기 화 하 는 것 입 니 다.이 단계 에서 분 배 된 클래스 변수(static 수식 변수)는 클래스 의 인 스 턴 스 변 수 를 포함 하지 않 습 니 다.final 이 아 닌 변수 에 대해 JVM 은 할당 문장의 값 이 아 닌'0 값'으로 설정 합 니 다.예 를 들 어
        public static int num = 8;
        그러면 이 단계 에서 num 의 값 은 8 이 아니 라 0 입 니 다. final 수식 클래스 변 수 는 실제 값 으로 대 입 됩 니 다.해석 은 지정 한 클래스 가 다른 클래스/인 터 페 이 스 를 인 용 했 는 지,다른 클래스/인 터 페 이 스 를 찾 고 불 러 올 수 있 는 지 확인 하 는 것 입 니 다.이 검 사 는 인 용 된 클래스/인 터 페 이 스 를 재 귀적 으로 진행 되 며,JVM 의 실 시 는 다음 단계 에서 분석 을 수행 할 수 있 습 니 다.즉,실행 중인 코드 가 인 용 된 클래스/인 터 페 이 스 를 진정 으로 사용 할 때 입 니 다.
  예 를 들 어 지정 한 클래스 는 다음 코드 를 포함 합 니 다.
               MathUtil.add(2,1);
               그러면 정적 add 방법 을 호출 하기 전에 JVM 은 MathUtil 류 를 불 러 오고 링크 하 며 초기 화 합 니 다.
    3.초기 화
        마지막 단계 에서 JVM 은 정적 변 수 를 할당 하거나 부족 한 값 으로 초기 화 합 니 다.main 방법 을 실행 하기 전에 초기 화 합 니 다.지정 한 클래스 가 초기 화 되 기 전에 부모 클래스 를 초기 화 합 니 다.또한 부모 클래스 를 초기 화 할 때 부모 클래스 의 부모 클래스 도 이렇게 초기 화 합 니 다.이 과정 은 재 귀적 으로 진행 되 었 다.
public class StaticInitTest {

	public static int a=5;
	public static int b=a*2;
static{
	System.out.println("Static");
	System.out.println(b);
}

	public static void main(String[] args) {
		System.out.println("main method");
	}
}
실행 후 출력:
Static    
10                         //main 방법 을 실행 하기 전에 정적 변 수 를 초기 화하 고 정적 초기 화 프로그램 을 실행 합 니 다.
main method     //그리고 main 방법 을 실행 합 니 다.
마지막 으로 사용 하고 마 운 트 해제 하 는 것 은 말 할 것 도 없고 사용 과정 은 프로그램 이 정의 한 행동 에 따라 실행 되 며 마 운 트 해 제 는 GC 에서 이 루어 집 니 다.
 

좋은 웹페이지 즐겨찾기