Free Lines Arrow
본문 바로가기
Language/Java Architecture

[Java] Java 실행과정 및 JVM

by skahn1215 2021. 8. 20.
728x90
반응형

실행과정 및 JVM

Java 코드가 어떻게 수행되는지 확인해 봅니다.

 

 

 

실행과정

  • 자바 소스코드(.java)를  javac가 읽어 (.class)로 변환합니다.
  • Class Loader가 class 파일들을 JVM으로 로딩해 줍니다.
  • 로딩된 class파일들은 Execution engine을 통해 해석됩니다.
  • 해석된 바이트코드는 Runtime Data Areas 에 배치되고 수행이 이루어집니다.

 

 

 

전체 구조

 

 

 

JVM 이란?

Java Vritual Machine 이다.

자바 바이트코드(.class)를 실행할수 있는 주체이다.

 

 

 

Class Loader

  • 바이트코드를 JVM 으로 로드 하는 역할을 한다.
  • 자바 클래스를 JVM 으로 동적로딩하는 자바 런타임 환경일부이다.
  • 일반적으로 클래스들은 한 차례만 로드된다
  • 로딩 -> 링킹 -> 초기화 순으로 수행된다.

 

 

JVM Memory

Runtime Data Area 라고도 한다.

  • Method Area:
     - 모든 클래스 수준의 데이터가 저장되는 영역이다.
  • Heap Area:
    - 인스턴스 오브젝트가 저장되는 영역이다.
  • Stack Area:
    - 기본형 타입 변수 저장, 참조형 타입일때 참조값만 저장 메소드, 쓰레드 가 저장되는 영역이다.
  • PC Regeister:
    - 현재 실행중인 명령문의 주소를 가진다.
    - 스레드마다 존재한다.
  • Native Method Stack:
    - 자바외의 언어로 작성된 코드를 위한 영역이다.

 

 

Execution Engine

load 된 바이트 코드를 실행하는 영역이다.

두가지 방식을 사용한다 Interpreter 과 JIT Compiler 이다.

 

  • Interpreter:
    - 대부분 해당 방식을 사용한다.
    - Byte code(.class)를 하나씩 읽어서 해석후 실행.

  • JIT Compiler
    - Just In Time 의 약어이다.
    - 코드가 실행 되는 과정에서 실시간으로 일어난다. 그래서 Just In Time 이다.
    - 바이트코드 전체를 변환후 캐시에 저장되기 때문에 재사용시 컴파일이 한번만 한다.

  • Garbage Collection
    - 사용하지 않는 오브젝트를 자동으로 제거한다.
    - C++ 은 사용자가 직접 메모리를 해제 하지만 
    - Java 같은 경우는 Garbage Collection이 대신 해준다.

 

 

 

Native Method Interface

  • 다른 언어들로 작성된 라이브러리들을 호출하거나 반대로 호출되는 것을 가능하게 하는 프로그래밍 프레임워크이다
  • 자바코드가 네이티브 응용 프로그램(하드웨어와 운영 체제 플랫폼에 종속된 프로그램들)
  • C, C++, 어샘블리

 

 

 

Native Method Library

  • Java 이외의 다른 언어로 구현된 라이브러리를 말한다.

 

728x90
반응형

'Language > Java Architecture' 카테고리의 다른 글

[Java] Garbage Collector  (0) 2021.08.24

댓글