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

손경이·2024년 4월 29일
0

CS Study

목록 보기
19/25

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


소스코드(.java)에서 컴파일된 '자바 바이트코드'(.class)를 각 운영체제에 맞게 기계어로 변환하고 실행해줍니다. 그리고 GC(Garbage Collector)를 통해 자동적인 메모리 관리를 해줍니다.


> JVM (Java Virtual Machine, 자바 가상 머신)

  • 자바 프로그램을 실행하기 위한 가상 머신
  • 컴파일된 바이트 코드를 기계가 이해할 수 있는 기계어로 변환
    • **바이트 코드는 jvm이 알아들을 수 있는 명령어 집합
  • 스택 기반의 가상 머신
    • 메서드 호출, 지역 변수 및 임시 데이터의 저장 등을 처리
  • 메모리 관리와 GC를 수행
  • 자바를 실행하기 위해 만들어진 JVM은 코틀린, 스칼라, 그루비, Clojure 등 몇몇 언어들에서도 사용 가능
    • 이 언어들도 '자바 바이트코드'로 컴파일되도록 만들어짐

> JVM 장점

  • 개발자들은 자바를 실행할 컴퓨터 및 기기에 JVM 프로그램만 설치해두면 개발할 때 어떤 언어로 컴파일 해야 할 지 신경 쓰지 않아도 됨
  • 자바 프로그램은 다양한 운영체제에서 동일한 방식으로 실행될 수 있음
  • GC의 의해 메모리 관리를 자동으로 할 수 있음, 자원을 효율적으로 관리하고 개발자는 메모리 관리에 대한 부담을 줄일 수 있음

> JVM 단점

  • 소스코드(.java) 변경 시마다 컴파일을 하고 실행시켜야 하기 때문에 시간이 오래 걸림

> JVM 구조

  • 크게 Class Loader, Runtime Data Area, Execution Engine, GC(Garbage Collector)로 나누어짐

  • JVM 구조 참고하기

  • 자바 애플리케이션 실행과정
    1. 컴파일러가 자바 소스코드를 자바 바이트 코드로 변환
    2. Class Loader가 바이트코드를 Runtime Data Area에 로드
    - Class Loader를 통해 JVM 메모리 내로 로드
    3. 로딩된 바이트 코드는 Execution Engine에 의해서 실행
    - Execution Engine(실행 엔진)을 통해 컴퓨터가 읽을 수 있는 기계어로 해석(각 운영체제에 맞는 기계어)


참고

0개의 댓글