Juuunew 살아남기

[JAVA] JVM 03 - 실행 엔진 (Execution Engine) 본문

Language/JAVA

[JAVA] JVM 03 - 실행 엔진 (Execution Engine)

Juuunew 2023. 1. 12. 13:00

실행 엔진이란?

 

실행엔진은 메모리에 적재된 클래스(바이트 코드)들을 기계어로 변경하여 명령어 단위로 실행한다. 바이트 코드를 운영체제에 맞게 해석해주는 역할을 수행하며 크게 두 가지 방식을 사용한다.

 

  • 인터프리터 (Interpreter)
  • JIT (Just In Time)

인터프리터 (Interpreter)

 

바이트 코드 명령어를 하나씩 읽어서 해석하고 바로 실행한다. 바이트 코드 한 줄씩 읽고 실행하는데 중복되는 바이트 코드들에 대해서도 매번 컴파일 하게되어 속도가 느리다는 단점이 있다. 따라서 중복되는 바이트 코드에 대해서는 JIT 컴파일러를 사용한다.

 

JIT (Just In Time)

 

인터프리터의 속도 문제를 해결하기 위해 생겨난 기능이며, 인터프리터로 먼저 컴파일을 하다가 반복되는 코드를 발견하면 JIT 컴파일러가 바이트 코드 전체를 네이티브 코드로 변경하고 해당 메서드를 더 이상 인터프리팅 하지 않고 네이티브 코드로 직접 실행하는 방식이다.

 

가비지 컬렉터 (Garbage Collector)

 

Heap 메모리 영역에 생성된 객체들 중에 더 이상 참조되지 않는 객체들을 탐색 후 제거해주는 역할을 한다. 

C언어 같은 경우 개발자가 직접 메모리 관리를 해줘야 하지만, JAVA에서는 이 GC를 사용하여 자동으로 메모리를 최적화 시켜준다.

 

 

 

💡 공부 중 정리하는 내용이므로 부족한 부분이 있을 수 있습니다.

 

💡 참고자료

 

블로그 1

 

JVM - 실행 엔진(Execution Engine)

<br /><br />

junhyunny.github.io

 

 

블로그 2

 

[JAVA] ☕ JVM 내부 구조 & 메모리 영역 자세히 정리

저번 포스팅에서는 JRE / JDK / JVM에 대해서 간략하게 알아보는 시간을 가졌다면, 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 할 예정이다. JVM(자바 가상 머신)은 자바 언

inpa.tistory.com