티스토리 뷰

자바 가상 머신, JVM(Java Virtual Machine)은?

자바 가상 머신은 자바 코드 또는 애플리케이션을 구동하기위한 런타임 환경을 제공하는 엔진이다. JVM은 자바로 작성된 애플리케이션을 기계어로 변환시켜 동작시키는 역할을 한다. 그리고 자바와 운영체제 사이에서 중계자 역할을 하여 자바가 운영체제나 하드웨어에 종속적이지 않도록 도움을 준다. 반대로 JVM은 운영체제에 종속적이기 때문에 운영체제에서 실행 가능한 JVM이 필요하다.

자바 프로그램 실행 순서

  1. 프로그램이 실행되면 자바 컴파일러(javac)가 자바 파일(.java)를 바이트코드(.class)로 변환한다.
  2. Class Loader로 바이트 코드를 JVM에 로딩한다.
  3. Execution Engine은 로딩된 클래스 파일들을 해석한다.
  4. 해석된 프로그램은 Runtime Data Area에 배치되어 수행이 이루어진다.

JVM Architecture

JVM 구성요소

Classloader

JVM의 하위 시스템으로 프로그램이 실행될때 .class 파일을 로드하는 역할을 한다.

Method Area

메소드 영역은 클래스, 변수, static변수, 메소드, 상수 정보가 저장되는 공간이다.

Heap

힙 영역은 new 명령어를 통해 생성되는 인스턴스, 객체가 저장되는 공간으로 Garbage Collector에 의해 관리된다.

Java Threads(Stack)

각 스레드는 고유한 스택영역을 할당받으며 스택영역은 메서드안에서 사용되는 지역변수, 전역변수, 리턴 값 등이 저장된다. 메서드가 호출되면 공간을 사용하고 메서드가 종료되면 반납한다.

Program Counter Register

PC 레지스터는 현재 실행중인 Java 가상 머신 명령어의 주소를 저장한다.

Native Method Stack

응용 프로그램에서 사용되는 모든 기본 메서드가 포함되어있는 영역이다.

Execution Engine

다음을 포함한다.

  1. 가상 프로세서
  2. 인터프리터 : 바이트 코드 스트림을 읽은 다음 명령어를 실행한다.
  3. JIT (Just-In-Time) 컴파일러 : 성능 향상을 위해 사용되는것으로 유사한 기능을 가진 바이트 코드의 일부를 동시에 컴파하여 컴파일에 필요한 시간이 줄어들게 한다.

Java Native Interface

C, C ++, Assembly 등과 같은 다른 언어로 작성된 다른 애플리케이션과 통신하기위한 인터페이스를 제공하는 프레임 워크.

'프로그래밍 > Java' 카테고리의 다른 글

[JAVA] 접근 제어자(Access modifier)  (0) 2021.06.25
[JAVA] 객체지향 이란?  (0) 2021.06.22
[JAVA] GC(Garbage Collection)이란?  (0) 2021.05.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함