Backend CS - #4 JVM

박주현·2023년 2월 20일
0
post-thumbnail

JVM 이란?

  • 간단하게 말하자면, 자바 프로그램 실행환경을 만들어 주는 소프트웨어
  • 자바 코드를 컴파일하여 .class로 만들게 되면 코드가 JVM에서 실행된다.
  • 운영체제 ( OS ) 에 종속받지 않고 CPU가 자바를 인식하여 실행 할 수 있도록 함.

JVM 구조

  1. 클래스 로더(Class Loader)

  2. 실행 엔진 (Execution Engine)

    • 인터프리터(Interpreter)
    • Just-In-Time 컴파일러
    • 가비지 콜렉터(Garbage Collector)
  3. 런타임 데이터 영역(Runtime Data Area)


1. 클래스 로더

  • JVM 내로 .class 파일을 로드
  • 링트를 통해 배치하는 작업 수행
  • 런 타임시 동적으로 클래스를 로드

2. 실행 엔진

  • 클래스를 실행 시킴
  • 클래스 로더가 런타임 영역에 바이트 코드 배치 후 실행 엔진에 의해서 실행.
    ▶ 바이트 코드 : 가상 머신이 이해 할 수 있는 언어로 변환된 자바 소스 코드
  • 종류
    1. 인터프리터: 자바 컴파일러에 의해 변환된 바이트 코드를 읽고 한줄 씩 기계어로 해석하는 역할.
    1. Just-In-Time 컴파일러 : 인터프리터 단점을 보완하기 위해 등장, 프로그램이 런타임 중에 여러번 호출되는 메소드들을 미리 만들어 둔 해석본을 이용해서 컴파일 하는 역할.
    2. 가비지 콜렉터 : 더이상 사용되지 않는 인스턴스를 찾아서 메모리에서 삭제함.

3. 런타임 데이터 영역

  • 프로그램을 수행하기 위한 OS에서 할당받은 메모리 공간.
  • 종류
    1. PC Register : 스레드가 시작될 경우 생성되는 공간으로 스레드별로 하나씩 존재
    ▶ 스레드 : 프로세스 내에서 실제로 작업을 수행하는 주체. 모든 프로세스에는 한 개 이상의 스레드가 존재하며 작업실행.
    1. JVM 스택 영역 : 프로그램 실행 과정에서 임시로 할당되었다가 메소드를 빠져 나갈시 소멸되는 데이터 저장하기위한 영역.
    2. Native method stack : 바이트 코드가 아닌 실제 실행 할 수 있는 기계어로 작성된 프로그램 실행시키는 영역
    3. Method Area : 클래스 정보를 메모리 공간에 올릴 경우에 초기화되는 대상을 저장하는 메모리 공간
    4. Runtime Constant Pool : 상수 자료형 저장하여 중복 막는 역할.
    5. Heap : 객체를 저장하는 가상메모리 공간으로 new연산자로 생성되는 배열과 객체를 저장

4. JRE와 차이점?

  • JRE : Java Runtime Environment 자바 런타임 환경으로 컴파일된 Java 프로그램을 실행
  • 구성 : JVM + 자바 클래스 라이브러리
profile
빌드업 막 시작하는 개발자

0개의 댓글