Java/Java 기타

[Java] 자바 가상 머신 JVM(Java Virtual Machine)

excited-hyun 2021. 11. 11. 16:03
반응형

자바 가상 머신 (JVM)

자바 가상 머신은 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행해줍니다. 또한 자바와 OS 사이에서 자바가 OS에 관계없이 실행될 수 있도록 하는 역할을 해줍니다.

이 덕분에 윈도우에서 구현한 자바 프로그램이 mac에서도 동작하게 될 수 있는 겁니다.

 

JVM의 역할

자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행해 주는 역할을 합니다.

자바와 OS 사이에서 OS에 독립적으로 자바 프로그램이 실행 될 수 있도록 해줍니다.

또한 가비지 컬렉션 같은 기능을 통해서 프로그램의 메모리 관리를 알아서 해주기도 합니다.

 

사실 저는 이걸 보고도 음.. 그래서 뭘 어떻게 해서 OS에 관계없이 자바 프로그램이 실행되게 해주는거지? 하는 의문이 계속 남더라구요..

그래서 자바의 실행 과정을 알아보았습니다!!

 

자바 프로그램의 실행 과정

  1. 자바 프로그램이 실행되면 JVM은 OS로부터 프로그램이 필요로 하는 메모리를 할당 받고 이 메모리를 용도에 맞게 여러 영역으로 나눠 관리합니다.
  2. 자바 컴파일러 (javac)가 자바 소스코드 (.java)를 읽어 자바 바이트코드(.class)로 변환시킵니다. (바이트 코드: JVM이 이해할 수 있는 언어로 변환된 코드 - Opcode와 피연산자로 이루어짐.)
  3. JVM의 클래스 로더를 통해 class 파일들을 JVM의 메모리에 로드합니다.
  4. 데이터 영역에 로딩된 class 파일들은 JVM의 Execution engine을 통해 실행됩니다.
  5. 해석된 class 파일은 JVM의 Runtime Data Areas에 배치되고 수행됩니다. 이과정에서 JVM은 가비지 컬렉션 같은 기능으로 메모리를 관리해줍니다.

이러한 과정을 통해서 JVM이 자바의 바이트코드를 OS에 맞게 수행될 수 있도록 해석해주므로 자바가 OS에 독립적일 수 있게 되는 것입니다.

728x90
반응형