티스토리 뷰

Language/Java

Java Virtual Machine 구조

Seogineer 2021. 4. 9. 00:59

Java Virtual Machine이란?

- Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상머신.

- JRE(Java Runtime Environment)에 포함되어 있다.

- Class Loader, Runtime Data Area, Execution Engine, JNI, Native Method Library으로 이루어져 있다.

 

Class Loader

- .class 파일을 JVM의 Runtime Data Area에 배치한다.

 

Runtime Data Area

- Method 영역, Heap 영역은 모든 쓰레드가 공유하는 영역.

- Stacks, PC registers, Native Method Stacks은 쓰레드 마다 하나씩 생성되는 공간.

- Method 영역은 JVM이 시작될때 생성되는 공간.

  바이트코드, 클래스, 변수의 정보, Static 변수가 저장된다.

- Heap 영역은 동적으로 생성된 객체가 저장되는 영역.

  new 연산을 통해서 동적으로 생성된 인스턴스 변수(String, Array 등)가 저장된다.

  Garbage Collection의 대상이 된다.

- Stack 영역은 지역변수나 메서드의 매개변수, 임시적으로 사용되는 변수, 메서드의 정보가 저장되는 영역.

  Reference Type(class, interface, enum, Array)의 객체를 Heap에 저장하고 그 주소를 Stack 영역에 저장하여 사용한다. 예) (Stack)-> Person p = new Person(); <-(Heap)

- PC(Program Counter) Register는 각 쓰레드는 메서드를 실행하고 있고, PC는 그 메서드 안에서 몇 번째 줄을 실행해야 하는지 나타내는 역할.

- Native Method Stack은 Java가 아닌 다른 언어로 작성된 코드를 위한 공간.

 

Execution Engine

- Load된 Class 파일의 바이트코드를 실행한다.

- Interpreter, JIT Compiler, Garbage Collector로 나눔.

- Interpreter는 명령어를 한줄씩 해석하면서 실행.

- JIT Compiler는 실행 시점에 자주 쓸만한 코드들을 기계어로 변환 시켜놓고 저장해서 실행.

- Garbage Collector는 Heap 영역에 생성된 객체들 중에 Reachability를 잃은 객체를 탐색 후 제거하는 역할.

 

Native Method Interface(JNI)

- JVM에 의해 실행되는 코드 중 네이티브로 실행하는 것이 있다면 해당 네이티브 코드를 호출하거나 호출 될 수 있도록 만든 일종의 프레임워크.

 

Native Method Libraries

- 네이티브 메소드 실행에 필요한 라이브러리.

 

참고

namu.wiki/w/%EC%9E%90%EB%B0%94%20%EA%B0%80%EC%83%81%20%EB%A8%B8%EC%8B%A0?from=JVM

www.youtube.com/watch?v=AWXPnMDZ9I0&list=TLPQMDgwNDIwMjFUy2LZh_aEhA&index=1

velog.io/@litien/JVM-%EA%B5%AC%EC%A1%B0

www.youtube.com/watch?v=UzaGOXKVhwU&list=TLPQMDgwNDIwMjFUy2LZh_aEhA&index=3

'Language > Java' 카테고리의 다른 글

Overflow가 발생하면 어떻게 될까?  (0) 2022.04.27
JVM의 Garbage Collector  (0) 2021.04.09
10진수 <-> 2, 8, 16진수 변환  (0) 2021.02.28
데이터 타입별 형변환 방법  (0) 2021.02.22
copyOf() / copyOfRange()  (0) 2021.02.18
댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글