사유 : 공부 개발을 하면서 JAVA 실행이 어떻게 되는지는 대략적으로 알고 있었으나
어떻게 돌아가는지, 어떤식으로 구성이 되어있는지 자세하게 설명을 하지 못하여 다시 공부하고자 한다.
- JVM 이란?
-> Java Virture Machine 뜻함
- JVM 특징
-> JVM을 사용하기 위해선 JDK안에 있는 JRE설치 필요
-> OS 위에서 독립적으로 운영되기 때문에 OS애 영향을 받지않음 ex) window, mac, linux 등
- 실행 순서
1. Class Loader는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크 하여 Runtime Data Area에 업로드 즉 JVM의 메모리에 올린다..
2. Runtime Data Area에 업로드 된 Byte Code는 Execution Engine을 통해 해석된다.
3. Execution Engine에 의해 Garbage Collector의 작동과 Thread 동기화가 이루어진다.
- Class Loader
- 로드 - 클래스 파일을 가져와서 JVM의 메모리에 로드한다.
- 검증 - 자바 언어 명세( Java Language Specification ) 및 JVM 명세에 명시된 대로 구성되어 있는지 검사한다.
- 준비 - 클래스가 필요로 하는 메모리를 할당( 필드, 메서드, 인터페이스 등등 )
- 분석 - 클래스의 상수 풀 내 모든 심볼릭 레퍼런스를 다이렉트 레퍼런스로 변경한다.
- 초기화 - 클래스 변수들은 적절한 값으로 초기화한다. ( static 필드 )
- Runtime Data Area
-> JVM이 프로그램을 수행하기 위해 OS로부터 할당받는 메모리 영역
1.
- Excution Engine
- 인터프리터 - 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행한다. 하나하나의 실행은 빠르나, 전체적인 실행 속도가 느리다는 단점을 가짐
- JIT 컴파일러 ( Just-In-Time Compiler ) - 인터프리터의 단점을 보완하기 위해 도입된 방식. 바이트코드 전체를 컴파일하여 바이너리 코드로 변경하고 이후에는 해당 메서드를 더 이상 인터프리팅 하지 않고, 바이너리 코드로 직접 실행하는 방식이다. 하나씩 인터프리팅하여 실행하는 것이 아니라 바이트 코드 전체가 컴파일된 바이너리 코드를 실행하는 것이기 때문에 전체적인 실행속도는 인터프리팅 방식보다 빠르다.
# 참고 문헌
[JAVA] ☕ JVM 내부 구조 & 메모리 영역 자세히 정리
저번 포스팅에서는 JRE / JDK / JVM에 대해서 간략하게 알아보는 시간을 가졌다면, 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 할 예정이다. JVM(자바 가상 머신)은 자바 언
inpa.tistory.com
1장. JVM은 무엇이고 자바는 어떻게 실행되는가?
출처 : https://github.com/whiteship/live-study/issues/1 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 [JI
velog.io
- https://tecoble.techcourse.co.kr/post/2021-08-09-jvm-memory/
JVM에 관하여 - Part 3, Run-Time Data Area
Java 로 작성된 코드는 어떻게 돌아가는 걸까? 해당 물음에 답을 찾기 위한 JVM 시리즈 3편, JVM 의 구성요소 중 Run-Time Data Area 에 관한 글입니다. 이번 글에서는 JVM…
tecoble.techcourse.co.kr
'JAVA' 카테고리의 다른 글
JAVA 버전 변경 안될 때 (0) | 2022.12.16 |
---|