inblog logo
|
LHS's Study Space
    디자인패턴

    [디자인 패턴] 1. JVM

    lhs's avatar
    lhs
    Nov 13, 2024
    [디자인 패턴] 1. JVM
    Contents
    1. JVM이란?2. JVM 구성요소
     

    1. JVM이란?

    • Java Virtual Machine(자바 가상 머신)의 약자로 자바 프로그램이 실행되는 환경을 제공하는 소프트웨어이다.
    • 자바 프로그램을 실행할 때 자바 바이트코드(.class 파일)를 기계어로 변환해 실행할 수 있도록 한다.
    • 자바 애플리케이션을 운영체제에 맞게 실행할 수 있게 만들어 주는 추상화 계층 역할을 하여 운영체제와 하드웨어에서 독립적으로 실행될 수 있도록 한다.
     

    2. JVM 구성요소

    notion image
     
    1. Class Loader(클래스 로더)
        • 클래스 로더는 클래스 파일을 동적으로 메모리에 로드하는 역할을 한다.
        • 로딩, 링크, 초기화 과정으로 나누어진다.
    1. Runtime Data Area(런타임 데이터 영역)
      1. Method Area(메서드 영역)
          • 프로그램의 클래스 정보, 상수, 정적 변수, 정적 메서드 등을 저장하는 영역
          • 프로그램은 메서드 영역에 저장된 바이트 코드를 하나씩 실행하는 방식으로 흐른다.
      2. Heap Area(힙 영역)
          • 객체와 배열을 동적으로 할당하는 영역
          • GC(가비지 컬렉터)에 의해 관리된다.
      3. Stack Area(스택 영역)
          • 메서드 호출과 관련된 정보(지역 변수, 매개 변수, 리턴 주소 등)을 저장하는 영역
          • 메서드가 호출되거나 변수가 선언될 때 스택에 생성되고 메서드가 종료되면 제거된다.
          • 쓰레드마다 독자적인 영역을 가지고 있다.
      4. PC register(Program Counter Register)
          • 현재 실행 중인 명령어의 주소를 저장하는 영역
          • 메서드를 실행할 때, PC register를 사용하여 현재 어떤 명령어를 실행할지 추척한다.
          • 쓰레드마다 독자적인 영역을 가지고 있다.
      5. Native Method Stack(네이티브 메서드 스택)
          • 자바의 네이티브 메소드 호출을 위한 스택
          • 네이티브 메소드를 호출할 때, 해당 메소드에 필요한 로컬 변수와 리턴 값을 저장하는데 사용된다.
          • 네이티브 메소드를 호출하면 네이티브 메서드 스택에 메모리가 할당된다.
    1. Garbage Collecter(가비지 컬렉터)
        • 더 이상 참조되지 않는 객체를 자동으로 제거하여 메모리를 관리한다.
        • 자주 사용되는 객체와 사용하지 않는 객체를 구분하여, 메모리를 최적화한다.
    1. Execution Stack(실행 엔진)
        • 바이트코드를 실제로 실행하는 역할을 한다.
        • JIT(Just-In-Time) 컴파일러를 사용하여 실행중인 코드를 네이티브 코드로 변환하여 실행한다.
    Share article
    Contents
    1. JVM이란?2. JVM 구성요소

    LHS's Study Space

    RSS·Powered by Inblog