JVM
- JVM 이란? JVM은 Java Virtual Machine의 줄임말로 java를 실행하기 위한 가상 기계라고 할 수 있다. OS에 종속받지 않고 실행되기 위해 OS 위에서 JAVA를 실행시키는 작업을 JVM에서 할 수있다.
Java 프로그램 실행 과정
- Java 프로그램이 실행되면 JVM은 OS로부터 프로그램이 필요로 하는 메모리 할당
- javac (자바 컴파일러)가 java 소스코드 (.java)를 읽어들여 자바 바이트코드(.class)로 변환
- Class Loader를 통해 class 파일들을 JVM으로 로딩
- 로딩된 class 파일들은 Execution engine을 통해 해석
- Interpreter: 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행
- JIT Compiler: 인터프리터 방식으로 실행하다가 적절한 시점에 바이트 코드 전체를 컴파일
- 해석된 바이트코드는 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 |