JVM(자바 가상 머신)의 내부 동작 원리

JVM(자바 가상 머신)의 내부 동작 원리
muaga's avatar
Apr 30, 2024
JVM(자바 가상 머신)의 내부 동작 원리

JVM


1. JVM(Java Virtual Machine)

자바 가상 머신으로, 컴퓨터가 자바 프로그램을 실행할 수 있도록 도와주는 S/W이다. 바이트 코드로 변환된 Java 파일을 한 줄씩 읽어 해석한 후 실행한다. 이로 인해 자바로 개발된 프로그램은 CPU나 운영체제의 종류와 관계없이 자바 가상 머신을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있다.
 

2. 내부 동작 원리

💡
Java 파일 -javac(컴파일러) ➡️ .class ➡️ java 실행 ➡️ JVM start
 
notion image
 
  • javac : 바이트 코드
  • JDK
    • 자바 프로그램을 개발하는데 필요한 모든 도구와 라이브러리의 집합
    • 컴파일 실행파일 / 실행 가능한 바이트 코드로 변환
    • 컴파일러, 디버거, JRE
  • JRE
    • 자바 프로그램을 실행하는데 필요한 환경을 제공
    • 바이트 코드를 해석, 실행
    • JVM, 라이브러리들
    •  

3. JVM Start

3.1. 클래스 로드(.class 파일 - RAM)

JVM이 실행 시점에서 필요한 클래스를 찾아서 메모리로 로드하는 과정이다. 👉 JVM이 관리하는 영역
 

2.2. static 로드(정적 변수)

static이 적힌 코드를 메모리에 저장하는 것이다. static은 실행의 처음부터 끝까지 존재하므로, 어떤 것을 static으로 존재시킬 지 생각해봐야 한다.
  • 'main' 이전에 이미 셋팅이 되어 있어야 한다.
 

3.3. 'main'을 찾는다(static 로드가 된 공간에서)

static - main은 1set이다. main은 실행되지 않은 상태(모든 코드 비 실행 상태)이며, 메모리에 뜨지 않는다.
 

3.4. main의 body 실행

main의 body를 찾아 코드를 실행한다.
 

3.5. JVM 종료

main 메소드가 종료되면 JVM의 실행도 종료되며, 모든 메모리 리소스가 해제되므로 static도 소멸된다.
  • main 메소드가 종료되어도 다른 스레드가 실행중이라 JVM이 종료되지 않는다면, static는 계속 유지된다.
 


데몬 프로세스 : 실행이 된 후 스스로 종료되지 않는 프로세스 예) TV, 웹사이트(내가 x를 눌리기 전까지는 스스로 종료되지 않는다)
Share article

muaga's Hub