발표자 : 이지연 Programming Systems Lab. JVM Seminar Chap.1 자바 가상 머신의 소개 발표자 : 이지연 Programming Systems Lab.
목 차 1.1 자바 가상 머신이란 무엇인가? 1.2 자바 가상 머신의 개념적 구성 목 차 1.1 자바 가상 머신이란 무엇인가? 1.2 자바 가상 머신의 개념적 구성 1.3 가비지 콜렉션(Garbage Collection) 1.4 자바 가상 머신의 구현 1.5 자바 가상 머신의 미래
1.1 자바 가상 머신이란? 하나의 프로그램이 모든 시스템에서 실행될 수 있도록 하는 “추상화된 컴퓨터” 팀 린드홀름(Tim Lindholm)과 프랭크 옐린(Frank Yellin)이 쓴 “자바 가상 머신 명세서” 명령어들의 집합과 각 명령어의 의미의 정의 Class파일 형식이라고 불리는 바이너리 형식 프로그램에 문제가 없는지를 확인하는 알고리즘
1.1 자바 가상 머신이란? 명령어 집합 바이트 코드라 불리는 명령어들의 집합 (Oolong언어로 표현) Getstatic java/lang/System/out Ljava/io/PrintStream; Ldc “Hello, world” Invokevirtual java/io/Println(Ljava/lang/String;)V
1.1 자바 가상 머신이란? Class 파일 형식 검증(Verification) 프로그램이 JVM에서 요구하는 규칙들을 만족시키는 것을 확인 스택 오버플로우, 접근할 수 없는 메모리 영역에의 접근 시도, 객체를 부적합한 타입으로 캐스팅하기, 금지된 메모리 영역의 포인터 값을 얻어내기 등
1.2 자바 가상 머신의 개념적 구성 Class area : 프로그램 코드와 상수 저장 Java stack : 프로그램 수행 도중 메소드 호출 기록 Heap : 객체 저장 Native method stacks : 네이티브 메소드 지원
1.2 자바 가상 머신의 개념적 구성 클래스 영역 수퍼클래스(Superclass) 인터페이스들의 리스트 필드(field)들의 리스트 메소드들의 리스트와 구현된 메소드 상수들의 리스트
1.2 자바 가상 머신의 개념적 구성 자바 스택
1.2 자바 가상 머신의 개념적 구성 힙
1.3 Garbage Collection Garbage Collection 객체가 더 이상 사용되지 않는다면 객체에 주어진 메모리 공간을 반환 class A { B b; } class B A a; A foo = new A(); foo.b = new B(); foo.b = null;
1.3 Garbage Collection
1.4 자바 가상 머신의 구현 자바프로그램이 시스템에 독립적일 수 있도록 자바 가상 머신이 모든 시스템 수용 썬 마이크로시스템의 JDK(Java Development Kit) JDK 내에 있는 가상 머신 : “java” 라는 이름의 프로그램 ex) java Hello
1.5 자바 가상 머신의 미래 “한 번 작성하면, 어디에서나 실행시킬 수 있다(Write Once, Run Anywhere)” 실현 속도와 성능 향상 : 바이트 코드를 프로그램이 실행되는 컴퓨터의 프로세서에 최적화된 네이티브 코드로 변환