본문 바로가기
Dev/Java

[Java] JVM 구조

by Ellen571 2024. 7. 27.
반응형

 

 

OOP(Object Oriented Programming 객체 지향 프로그래밍)는 클래스 단위로 구현된다.

  • OOP 언어 : Java, Python, C#...

 

자바 프로그래밍 할 때는 자바 파일(.java)로 작성하고

cmd에서든 IDE에서든 자바 파일을 컴파일하면 클래스 파일(.class)이 생성 된다.

  • 컴파일 : 자바 소스코드를 바이트코드로 변환하는 과정
  • 바이트코드 : JVM이 인식할 수 있는 기계어, 각 명령어가 1byte(8bit=2^8)로 이루어져 있다.

 

클래스 파일이 JVM으로 넘어가면 어떻게 실행될까?

JVM 자바 가상 머신 구조

 

 

JVM은 크게 세 가지 영역으로 구분 된다.

 

Class Loader

  • 클래스 저장, 검증, 초기화
  • Loading : 클래스 정보 런타임 데이터 영역에 저장
  • Linking : 클래스 정보 검증하고 사용할 수 있게 준비
  • Initializaion : 클래스 정보 초기화

 

Runtime Data Area

  • 메모리 공간
  • Method Area : 로드된 클래스 정보를 맨 처음 메모리 공간에 올릴 때, 초기화 되는 대상을 저장
  • Heap : 참조 자료형 저장
  • Thread :
    • PC Register: 실행중인 명령 저장
    • JVM Stack: 메서드가 수행될 때마다 하나의 스택 프레임이 생성되고 메서드가 종료되면 스택 프레임이 제거
    • Native Method Stack: 자바가 아닌 다른 언어로 작성된 네이티브 메서드를 지원하기 위한 스택

 

Execution Engine

  • 바이트코드 실행
  • Interpreter : 바이트 코드를 읽고, 운영체제가 실행할 수 있도록 기계어로 변경
  • JIT(Just In Time) 컴파일러 : 자주 실행되는 바이트 코드를 런타임 중에 기계어로 컴파일하여 사용
  • Garbage collector : 메모리에서 더 이상 사용되지 않는 객체를 찾아 제거

 

 

반응형