본문 바로가기
개발/Java

JVM(Java Virtual Machine) 이란?

by 방구쟁이 2021. 6. 24.
728x90

본 포스팅은 학습 목적에 있습니다.

 

시작하는 말

JVM이라는 말을 접한 적이 있는가? JAVA를 처음 배울때 컴퓨터가 어떻게 이 언어를 알아듣고 구현한 코드가 실행되는지 궁금한 적이 있다. 그것은 바로 JVM이 해주는 것이었다!

그럼 JVM이 무엇인지 알아보자.

 

JVM이란?

JVM은 자바를 실행하기 위한 가상 컴퓨터라고 생각하면 된다(실제 컴퓨터보다는 소프트웨어로 구현한 것)  

JVM은 JAVA와 OS 사이의 중개자 역할로 OS에 독립적이고 재사용이 가능하다.(즉, JAVA 응용 프로그램은 JVM과 통신하고 통신하며 받은 명령을 OS가 이해할 수 있도록 변환 후 전달)  

JVM은 메모리 관리 및 가비지 컬렉션(Garbage Collection) 수행  

 

JVM 구조

출처 : https://github.com/HyeminNoh/Tech-Stack/blob/master/docs/Java/JVM(Java_Virtual_Machine).md

Class Loader  

 자바 컴파일러를 사용해 전에 포스팅한 .java 확장자를 .class 파일로 컴파일. Class Loader를 통해 JVM에 .class 파일을 로드하고 링크를 통해 배치하는 작업 수행

Execution Engine

 배치된 .class 파일을 실행 엔진으로 실행

  • Interpreter : 바이트 코드를 명령어 단위로 읽어서 실행, 한 줄씩 수행
  • JIT(just in time) compiler : 위의 인터프리터 단점을 보완, 적절한 시점에 바이트 코드 전체를 컴파일하여 네이티브 코드를 직접 실행(해당 메서드가 자주 사용할 때만 컴파일 수행)

GC(Garbage Collector) 

 heap(동적 할당된 메모리 영역) 중에서 더 이상 사용하지 않는 영역을 자동으로 해지하는 기법으로 메모리를 스스로 관리해준다.

Runtime Data Area

 자바 프로그램을 수행하기 위해 OS에서 할당 받은 메모리 공간

  • PC Register : 스택에서 Operand(주소)를 가져와 별도의 PC Register에 저장, 어떤 명령을 실행할지의 부분을 기록
  • JVM stack : 실행과정에서 호출된 메서드의 파라미터, 지역변수, 리턴 값 등 임시 저장되는 영역
  • Native Method stack : 기계어로 작성된 프로그램을 실행시키는 영역, JAVA Native Interface를 통해 바이트 코드로 전환하여 저장
  • Heap : GC 대상 영역으로 인스턴스(new)는 모드 Heap의 저장
  • Method Area : .class 파일을 분석해 클래스에 대한 정보 저장

 

 

성장에 도움을 주신 개발자분

출처 : https://github.com/HyeminNoh/Tech-Stack/blob/master/docs/Java/JVM(Java_Virtual_Machine).md

 

오늘도 감사합니다.

728x90

'개발 > Java' 카테고리의 다른 글

[다시 공부하는 Java] Stream API  (0) 2023.04.18
java.util.Optional<T> 이란?  (0) 2021.12.22
JAVA 성능 향상 시키기  (2) 2021.08.11
[Java] StringTokenizer란?  (0) 2021.08.02
.class와 .java 확장자  (0) 2021.07.21

댓글