본문 바로가기
JAVA

Java의 실행과정과 JVM

by sangfeeeeel 2021. 9. 18.

전체적인 Java의 실행과정


전체적인 자바의 실행과정은 다음과 같습니다.

Java Compiler


 

Compiler란 해석기라는 의미로, 자바 소스 파일을 바이트파일로 바꿉니다. 일반적으로 소스파일을 컴파일한 파일은 바이너리 코드의 형태를 갖는데, 자바는 바이트 코드를 가진 파일로 변환이 됩니다.

이러한 바이트 코드로 작성된 클래스 파일은 JVM이 읽어들여 실행합니다.

JVM(Java Virtual Machine)


 

JVM은 자바 가상 머신으로 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것으로, 컴파일러가 변환한 클래스 파일을 읽어들여 실행시킵니다.

자바의 장점인 운영체제의 구애를 받지 않는 점과 메모리 관리가 용이하다는 점은 JVM이 가능하게 해주는 것입니다.

 

*Linking : 분리되어 있는 여러 소스파일들을 하나로 합치는것.

JVM에서의 실행과정

1. Class Loader를 통해 .class 파일들을 JVM에 올린다.

  • Class Loader: JVM내로 클래스를 로드하고, 링크를 통해 배치하는 작업을 수행한다.

2.JVM에 있는 .class 파일들을 Execution Engine의 Interpreter 와 JIT Complier를 통해 해석된다.

  • 실행엔진(Execution Engine) : 바이트 코드를 실행시키는 역할
  • Interpreter : 바이트 코드를 한줄 씩 실행시키는 역할
  • JIT Complier : Interpreter의 효율늘 높이기 위해, Interpreter가 반복되는 코드를 발견하면 JIT Complier가 네이티브 코드로 바꾸어, 그 다음부터 Interpreter는 네이티브 코드로 컴파일된 코드로 바로 사용

2.해석된 바이트 코드는 Runtime Data Areas 에 배치되어 실질적인 수행이 이루어진다.

  • Runtime Data Areas : 프로그램 실행중에 사용되는 다양한 영역
    1. PC Register: Thread가 시작될 때 생성되며 현재 수행 중인 JVM 명령의 주소를 갖고 있습니다.
    2. Stack Area: 지역변수, 파라미터 등이 생성되는 영역. 실제 객체는 Heap에 할당되고 해당 레퍼런스만 Stack에 저장됩니다.
    3. Heap Area: 동적으로 생성된 오브젝트와 배열이 저장되는 곳으로 GC의 대상 영역입니다.
    4. Method Area: 클래스 멤버 변수, 메소드 정보, Type 정보, Constant Pool, static, final 변수 등이 생성됩니다. 상수 풀(Constant Pool)은 모든 Symbolic Reference를 포함하고 있습니다.

사진 출처 : https://kingofbackend.tistory.com/123

'JAVA' 카테고리의 다른 글

GC(Garbage Collector) 란?  (0) 2021.10.20
Optional<T> 는 무엇인가..?  (0) 2021.07.14
hasNext() 와 next() 메서드  (0) 2021.04.29
JAVA - 향상된 for문  (0) 2021.04.26