JVM Process

JVM

- JVM 이란?  JVM은 Java Virtual Machine의 줄임말로 java를 실행하기 위한 가상 기계라고 할 수 있다. OS에 종속받지 않고 실행되기 위해 OS 위에서 JAVA를 실행시키는 작업을 JVM에서 할 수있다.


Java 프로그램 실행 과정

  1. Java 프로그램이 실행되면 JVM은 OS로부터 프로그램이 필요로 하는 메모리 할당
  2. javac (자바 컴파일러)가 java 소스코드 (.java)를 읽어들여 자바 바이트코드(.class)로 변환
  3. Class Loader를 통해 class 파일들을 JVM으로 로딩
  4. 로딩된 class 파일들은 Execution engine을 통해 해석
  • Interpreter: 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행
  • JIT Compiler: 인터프리터 방식으로 실행하다가 적절한 시점에 바이트 코드 전체를 컴파일
  1. 해석된 바이트코드는 Runtime Data Areas에 배치되어 수행 시작

JVM은 위 과정에서 필요에 따라 Thread Synchronization과 GC 작업 수행


HotSpot JVM, IBM

HotSpot JVM

 

Hotspot JVM은 가장 일반적인 JVM 중 하나

Hot한 Spot을 찾아서 해당 부분에서는 JIT 컴파일러를 사용하는 방법

내부적으로 프로파일링을 통해 핫스팟을 찾아내고 해당 부분에 대한 네이티브 코드를 생성

 

IBM

 

IBM은 J9/TR runtime을 사용한다.

  • IBM JVM은 Shared Classes Cache를 활용하여 메모리 소모 감소와 비용 줄일 수 있도록 설계
  • Heap을 구분하지 않고 Single heap 구조를 사용하다가 5.0 이후부터 옵션을 통하여 Heap 영역의 구분 방식을 변경할 수 있는 방법 제공

JVM 구성

  • Class Loader: JVM 내로 클래스 파일을 로드하고 링크를 통해 배치하는 작업을 수행하는 모듈, 런타임 동시에 동적으로 클래스를 로드
  • Execution Engine: 배치된 바이트코드들을 명령어 단위로 읽어서 실행
  • Garbage Collecter (GC): 힙 메모리 영역에 생성된 객체들 중에서 참조되지 않은 객체들을 탐색후 제거하는 역할
  • Runtime Data Area: JVM 메모리 영역으로 JAVA 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역

'MiddleWare > JEUS' 카테고리의 다른 글

[JEUS] 특정 Method 제한 설정  (0) 2022.08.08
[JEUS] JDBC JNDI DBCP 차이점  (0) 2022.08.08
[JEUS] Session Clustering 3 - specific scope cluster  (0) 2022.08.01
[JEUS] Cookie 설정  (0) 2022.07.18
[JEUS] JEUS 8.5 설치  (0) 2022.06.07

+ Recent posts