티스토리 뷰
클래스 로더 → JVM 내의 런타임 데이터 영역 배치 → 실행 엔진이 바이트코드 실행
바이트코드 = OpCode (1byte) + 추가 피연산자
실행 엔진
▶ OpCode 하나를 가져와 피연산자와 함께 작업을 수행 → 반복
▶ 바이트코드를 실제로 기계가 실행할 수 있는 형태로 변경해야 하는데, 두 가지 방식이 있음.
- 인터프리터
> 바이트코드 명령어를 하나씩 읽어서 해석하고 실행
> 하나하나의 해석은 빠르지만, 인터프리팅 결과의 실행은 느림
- JIT (Just-In-Time) 컴파일러
> 인터프리터 방식으로 실행하다가 적절한 시점에 바이트코드 전체를 컴파일하여 네이티브 코드로 변경, 이후에는 더 이상 인터프리팅하지 않고 네이티브 코드로 직접 실행
> 네이티브 코드는 캐시에 보관하기에 한 번 컴파일된 코드는 계속 빠르게 수행.

> JVM 명세에 규정되어 있지 않기에 다양한 방식의 JIT 컴파일러 도입 (오라클 핫스팟 VM / IBM JVM ...)
> 바이트코드 → IR로 변환하여 최적화 수행 → 네이티브 코드 생성
Reference
'JAVA' 카테고리의 다른 글
원시변수와 레퍼런스 ( + 변수 명명 규칙 ) (0) | 2018.10.29 |
---|---|
JAVA if문을 Enum을 활용해 적용하기 (0) | 2018.10.29 |
JVM - 2 (Runtime Data Area, 런타임 데이터 영역) (0) | 2018.10.24 |
JVM - 1 (Class Loader, 클래스 로더) (0) | 2018.10.23 |
6장. 클래스 feat. 이것이 자바다 (0) | 2018.05.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링 부트
- 노션트렐로광고X
- 최솟값
- 기능개발
- java
- 더 나은 내일
- 타겟 넘버
- 프로그래머스
- 124 나라의 숫자
- 완주하지 못한 선수
- AWS
- 텔레그램
- 객체지향과 디자인패턴
- 자바
- 맵 api
- 알고리즘
- cgv
- Spring
- API
- 카카오인턴
- json
- 문자열 내 마음대로 정렬하기
- 예매 알림
- FrogJmp
- 다음 맵 api
- 파이팅코리아
- codility
- 쇠막대기
- 안드로이드 스튜디오
- K번째수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함