Java

JVM(Java Virtual Machine)

셩리둥절 2022. 9. 15. 01:01
반응형

.java 파일을 javac.exe 컴파일러가 바이트 코드로 컴파일(.class)

JVM 자체는 운영체제에 맞게 설치되어야 한다.

java 프로그램은 JVM 중계로 운영체제에 자유롭다.

Class Loader

JVM내로 클래스 파일(.class)을 로드하고 링크를 통해 배치하는 작업을 수행하는 모듈

Run time 시 동적으로 Class 로드

 

Execution Engine

class를 실행시키는 역할

Class Loader에 의해 런타임 데이터 영역에 배치된 바이트 코드를 실행

 

Interpreter

.Byte Code는 기계가 바로 수행할 수 있는 언어가 아니다.

Byte Code를 한 줄씩 실행 -> 느리다는 단점

 

JIT(Just In Time)

인터프리터 방식의 단점을 보완하기 위해 도입된 JIT 컴파일러

인터프리터 방식으로 실행하다가 적절한 시점에 바이트코드 전체를 컴파일하여 네이티브 코드로 변경, 이후에는 네이티브 코드로 직접 실행하는 방식

네이티브 코드는 캐시에 보관하기 때문에 한 번 컴파일된 코드는 빠르게 수행하게 된다.

PC Register

Thread가 시작될 때 생성

스레드마다 하나씩 존재

Thread가 어떤 부분을 어떤 명령으로 실행해야할 지에 대한 기록을 하는 부분으로 JVM 명령의 주소를 갖는다

JVM Stack

각종 형태의 변수나 임시데이터, 스레드나 메소드의 정보를 저장한다.

메소드 호출시마다 각각의 스택 프레임이 생성된다.

메소드 수행이 끝나면 프레임 별로 삭제를 한다.

또 호출된 메소드의 매개변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장한다.

Native Method Stack

바이트코드가 아닌 실제 실행할 수 있는 기계어로 작성된 프로그램을 실행시키는 영역이다.

 

출처

https://asfirstalways.tistory.com/158

반응형

'Java' 카테고리의 다른 글

Scanner와 BufferedReader 차이 분석  (4) 2025.02.06
java 프로그램 소스 분석  (1) 2023.04.27
[디자인 패턴]MVC 패턴  (0) 2022.10.06
변수(Variable)  (1) 2022.09.18
Java  (1) 2022.09.11