Obj. 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기.
Todo.
- JVM이란 무엇인가?
- 컴파일 하는 방법.
- 실행하는 방법.
- 바이트 코드란 무엇인가?
- JIT 컴파일러란 무엇이며 어떻게 동작하는지?
- JVM 구성요소
- JDK와 JRE의 차이
1-1 JVM이란 무엇인가?
-> JVM은 Java Virtual Machine의 줄임말로 자바 가상 머신을 의미하며 다양한 OS에 있어서 관계없이 java 코드를 실행할 수 있도록 하는 것이며 GC(Garbage Collection)등의 기능을 제공하는 것이다.
1-2 컴파일 하는 방법
컴파일 이란? .java 파일을 .class파일로 변환하는 과정을 의미한다.
기본적으로 cmd에서 "javac" 명령어를 통해 사용한다. 여기서 여러 옵션이 있으니 찾아보면 좋을 듯하다.
1-3 실행하는 방법.
실행하는 방법은 "java" 명령어를 사용하여 class 파일을 실행시킨다.
1-4 바이트 코드란 무엇인가
프로그램을 실행하기 위해서 JVM이 이해할 수 있는 형태로 번역을 해서 전해줘야 한다. 일반적으로 java 파일은 단지 확장자가 java인 Text파일 이므로 자바 컴파일러로 변화되는 코드의 명령어 크기가 1바이트라서 바이트코드라고 한다고 함.
1-5 JIT 컴파일러란 무엇이며 어떻게 동작하는지?
JIT : Just In Time 컴파일러로 바이트 코드를 기계어로 번역하는 것을 의미한다. 기본적으로 인터프리터 방식은 바이트코드를 한 줄씩 읽으면서 코드를 실행시키기에 동일한 메소드를 중복 실행 시키는 비효율이 있기에 JIT는 런타임시 바이트 코드를 네이티브 기계어로 한번에 컴파일 후에 캐싱을 통해 사용한다.
1-6 JVM 구성요소
JVM의 구조
- Class Loader(클래스 로더)
- JVM내로 클래스를 로드하고 링크를 통해 배치한다. 실행시 동적으로 클래스를 로드하며 사용하지 않는 클래스는 메모리에서 제거함.
- Execution Engine(실행 엔진)
- 클래스 로더에서 분석된 클래스 파일의 데이터를 저장하고 실행 도중에 필요한 데이터를 저장하고 실행 도중에 필요한 데이터를 실행
- Interpreter, JIT Compiler, Garbage Collector 등이 있음.
- Runtime Data Area
- 5가지 영역으로 나뉜다
- Method 영역 : 모든 클래스 레벨의 데이터는 이곳에 저장된다. JVM은 오직 하나의 메서드 영역만 가지고 자원을 공유한다.
- Heap 영역 : 모든 objects들과 인스턴스 변수, 배열은 이곳에 저장된다. 이 또한 하나의 힙 영역만 가지고 있음.
- Stack 영역 : 모든 스레드에 대하여 저장이 되고 메서드가 종료되면 공간에서 삭제된다.
- PC 레지스터
- Native Method 스택
- 5가지 영역으로 나뉜다
1-7 JDK와 JRE의 차이
JDK : Java Development Kit
JRE : Java Runtime Environment
의 차이로 JRE는 JVM과 클래스 라이브러리와 같이 실행환경을 의미하고, JDK는 JRE와 함께 개발에 필요한 SW를 모아둔 것이다.
#Reference
1. adnjavainterview.blogspot.com/2017/04/java-vertual-machinejvm-architecture-in.html
'Java > [Whiteship]자바스터디' 카테고리의 다른 글
6주차 과제 : 상속 (0) | 2021.01.17 |
---|---|
5주차 과제 : 클래스 (0) | 2021.01.09 |
4주차 과제 : 제어문 (0) | 2021.01.09 |
3주차 과제 : 연산자 (0) | 2021.01.08 |
2주차 과제 : 자바 데이터 타입, 변수 그리고 배열 (0) | 2021.01.08 |