JVM의 역할과 동작 원리

JVM(Java Virtual Machine)은 Java 프로그램을 실행하기 위해 필요한 가상 환경을 제공한다.
HootJem's avatar
Aug 12, 2024
JVM의 역할과 동작 원리
 
notion image

JVM 이란?

JVM(Java Virtual Machine)은 Java 프로그램을 실행하기 위해 필요한 가상 환경을 제공한다. Java로 작성된 프로그램은 운영체제에 관계없이 실행된다(JVM 로 인해), 따라서 Java 프로그램은 다양한 플랫폼에서 동일하게 동작할 수 있으며, 개발자는 특정 운영체제에 종속되지 않고 코드를 작성할 수 있다.

1. JVM 의 역할

  • OS 독립성: JVM은 다양한 운영체제에서 Java 애플리케이션을 실행할 수 있게 해주며, 각 OS에 맞는 JVM이 제공된다. 이로 인해 개발자는 한 번 작성한 코드를 여러 운영체제에서 실행할 수 있다.
  • 메모리 관리: JVM은 프로그램 실행 중에 메모리를 자동으로 관리하며, 가비지 컬렉션을 통해 사용하지 않는 메모리를 회수한다.
 

2. JVM 의 동작 원리

notion image
  • Java 소스 코드 작성: 개발자는 .java 파일에 Java 소스 코드를 작성.
  • 컴파일: 작성된 Java 소스 코드는 javac 컴파일러에 의해 .class 파일로 변환. 이 .class 파일은 바이트코드로 이루어져 있으며, JVM이 이해할 수 있는 형태이다.
  • 실행: 변환된 .class 파일은 JVM에 의해 해석되며, 실제 운영체제에서 실행된다. 이 과정에서 JVM은 바이트코드를 기계어로 변환하여 실행한다.
    • 실행 과정은 다음과 같이 이루어 진다.
  1. 클래스 로드: JVM은 필요한 .class 파일을 로드하여 메모리에 적재한다.
  1. static 찾기 (main 메서드 찾기): 로드된 클래스에서 가장 먼저 static 메서드, 특히 main 메서드를 찾는다.
  1. static 공간 생성: JVM은 프로그램 실행 전에 static 멤버들을 저장할 메모리 공간을 생성한다. 이 공간에는 모든 static 변수와 메서드들이 저장되며, 이는 프로그램 시작 시 초기화된다.
  1. main 메서드 찾기: JVM은 생성된 static 공간에서 main 메서드를 찾아 실행할 준비를 한다.
  1. main 메서드 실행: main 메서드가 실행되면서, 프로그램 실행을 위한 새로운 스택 프레임(stack frame)이 생성된다. 이 스택 프레임은 메서드 호출과 관련된 지역 변수와 데이터를 저장하는 메모리 공간이다.
notion image

3. C언어와의 차이점

💡
C 언어의 경우, 컴파일된 프로그램이 특정 운영체제에서만 동작하도록 설계된다. C 프로그램은 운영체제의 셸(Shell)에서 실행되며, 하드웨어와 직접 소통한다. 반면, Java는 JVM을 통해 실행되므로 운영체제에 종속되지 않는다는 차이점이 있다.
Share article

[HootJem] 개발 기록 블로그