JVM

Tin9oo·2024년 1월 26일
  • Java Virtual Machine
  • Java 바이트코드를 실행하는 가상 머신으로, Java 애플리케이션의 플랫폼 독립성을 보장합니다.
    • JVM은 플랫폼에 종속적
  • JVM을 사용하면 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작 가능
  • JVM 메모리 구조
    1. ClassLoader

      • 파일 시스템이나 네트워크 소스 등에서 Java 클래스(.class 파일)를 읽어서 JVM에 로드
    2. 메서드 영역

      • static 변수, 전역 변수, 코드에서 사용하는 클래스 저장
      • 프로그램의 시작부터 종료까지 남아 있다
    3. 스택 영역

      • 지역 변수, 메서드 등을 LIFO 방식으로 저장
      • 메모리가 호출될 때 메모리에 할당되고 종료되면 메모리 해제
    4. 힙 영역

      • new 연산자를 통해 동적 할당된 객체 등 참조 데이터 저장
      • GC 의해 관리
    5. Execution Engine
      - 바이트코드를 실제로 실행할 수 있는 기계어로 변환
      - JVM은 초기에 프로그램 실행 시 인터프리터를 사용하여 바이트코드를 한 줄씩 읽어 실행합니다.
      프로그램 실행 중에 자주 실행되는 코드(핫스팟)를 식별하면, JIT 컴파일러가 해당 코드를 네이티브 코드로 컴파일하여 성능을 향상시킵니다.

      java 파일 실행 과정

      javac 컴파일러에 의해서 바이트 코트로 변환(.class)

      → classloader jvm 로드

      → execution engine 인터프리터 + jit 컴파일러 이용해서 실행


이 글이 작성되기까지 도움주신 태곤님, 성환님, 수아님께 감사드립니다.

profile
🚙 HMG SOFTEER 3rd | 💻 BE

0개의 댓글