
JVM 이란?
JVM(Java Virtual Machine)은 Java 프로그램을 실행하기 위해 필요한 가상 환경을 제공한다. Java로 작성된 프로그램은 운영체제에 관계없이 실행된다(JVM 로 인해), 따라서 Java 프로그램은 다양한 플랫폼에서 동일하게 동작할 수 있으며, 개발자는 특정 운영체제에 종속되지 않고 코드를 작성할 수 있다.
1. JVM 의 역할
- OS 독립성: JVM은 다양한 운영체제에서 Java 애플리케이션을 실행할 수 있게 해주며, 각 OS에 맞는 JVM이 제공된다. 이로 인해 개발자는 한 번 작성한 코드를 여러 운영체제에서 실행할 수 있다.
- 메모리 관리: JVM은 프로그램 실행 중에 메모리를 자동으로 관리하며, 가비지 컬렉션을 통해 사용하지 않는 메모리를 회수한다.
2. JVM 의 동작 원리

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

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