Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바 heap
- CS
- 개방-폐쇄 원칙
- JVM
- 자료구조
- 객체지향
- Native Method Stack
- Data Structure
- 객체지향 설계 5원칙
- pc register
- Spring
- Class Loader
- 자바
- stack메모리
- solid
- Open Closed Principle
- 스택메모리
- Stack
- Execution Engine
- Java
- Runtime data Area
- 단일책임원칙
- 개방폐쇄원칙
- 의존성 역전 원칙
- 스택
- 실행 엔진
- Spring SOLID
- 단일 책임 원칙
- Heap
- Single Responsibillity Principle
Archives
- Today
- Total
Juuunew 살아남기
[JAVA] JVM 03 - 실행 엔진 (Execution Engine) 본문
실행 엔진이란?
실행엔진은 메모리에 적재된 클래스(바이트 코드)들을 기계어로 변경하여 명령어 단위로 실행한다. 바이트 코드를 운영체제에 맞게 해석해주는 역할을 수행하며 크게 두 가지 방식을 사용한다.
- 인터프리터 (Interpreter)
- JIT (Just In Time)
인터프리터 (Interpreter)
바이트 코드 명령어를 하나씩 읽어서 해석하고 바로 실행한다. 바이트 코드 한 줄씩 읽고 실행하는데 중복되는 바이트 코드들에 대해서도 매번 컴파일 하게되어 속도가 느리다는 단점이 있다. 따라서 중복되는 바이트 코드에 대해서는 JIT 컴파일러를 사용한다.
JIT (Just In Time)
인터프리터의 속도 문제를 해결하기 위해 생겨난 기능이며, 인터프리터로 먼저 컴파일을 하다가 반복되는 코드를 발견하면 JIT 컴파일러가 바이트 코드 전체를 네이티브 코드로 변경하고 해당 메서드를 더 이상 인터프리팅 하지 않고 네이티브 코드로 직접 실행하는 방식이다.
가비지 컬렉터 (Garbage Collector)
Heap 메모리 영역에 생성된 객체들 중에 더 이상 참조되지 않는 객체들을 탐색 후 제거해주는 역할을 한다.
C언어 같은 경우 개발자가 직접 메모리 관리를 해줘야 하지만, JAVA에서는 이 GC를 사용하여 자동으로 메모리를 최적화 시켜준다.
💡 공부 중 정리하는 내용이므로 부족한 부분이 있을 수 있습니다.
💡 참고자료
'Language > JAVA' 카테고리의 다른 글
[JAVA] JVM 04 - 메모리 영역 (Runtime Data Area) (0) | 2023.01.28 |
---|---|
[JAVA] JVM 02 - 클래스 로더 (Class Loader) (0) | 2023.01.11 |
[JAVA] JVM 01 - JVM이란? / JVM의 구조 (0) | 2023.01.10 |
[JAVA] 메모리 - Heap (0) | 2023.01.02 |
[JAVA] 메모리 - Stack (2) | 2022.12.27 |