티스토리 뷰
자바를 복습하려고 자바의 정석 첫 장을 펼치자마자 난관에 봉착했다. 예전에는 아무 생각없이 읽었지만, JIT 컴파일러, HotSpot JVM, Runtime Constant Pool 등 외계어를 도저히 무시할 수 없어서 자바의 실행원리를 제대로 정리해야겠다고 다짐하여 글을 작성한다. 시리즈로 작성하려고 하는데, 본 게시글은 지적 호기심으로 깊게 검색해본 내용으로 초심자에게 적합하지 않을 수 있다.
설명하기에 앞서, Java는 썬 마이크로시스템즈(현 Oracle)에 의해 개발되었지만, JVM 명세(The Java Virtual Machine Specification)를 따르기만 하면 어떤 벤더든 JVM을 개발하여 제공할 수 있어서 JVM의 세부적인 구현은 다를 수 있다. 이 때문에 Hotspot JVM, IBM JVM, Azul zulu prime JVM 등 다양한 JVM이 있지만, 해당 시리즈에서 설명하는 JVM은 Oracle의 Hotspot JVM을 기준으로 설명한다. (근데 나는 zulu 사용 중이다 ㅋ)
아래의 그림을 보며, 목차에 대하여 설명하겠다.
[Java의 실행원리 1편] Compile-time 환경
- JVM, JRE, JDK에 대한 이해
- 모듈화로 인해 Java 9부터 JDK가 어떻게 변화했는지
- Java로 작성된 Source Code 파일(.java)이 자바 컴파일러(javac)에 의해 Byte Code 파일(.class)로 변하는 과정
[Java의 실행원리 2편] Runtime 환경 - JVM Class Loader
- Dynamic Loading (동적 로딩)
- Bootstrap Class Loader / Extension Class Loader / System Class Loader
- 변환된 클래스 파일이 JVM의 클래스 로더에 의해 JVM 메모리에 올라가는 과정
[Java의 실행원리 3편] Runtime 환경 - JVM Memory, Runtime Data Areas
- Method area, Heap area, Stack area, PC Register, Native Method Stack
- Constant Pool, Runtime Constant Pool, String Constant Pool 셋은 다를까?
- Permenant 영역 → Metaspace 영역으로 변하면서 생긴 변화
- static object 저장 위치는 method area가 아닌 heap area
[Java의 실행원리 4편] Runtime 환경 - JVM Execute Engine
- Execute Engine의 Interpreter, JIT Compiler, Garbage Collector
- JNI를 통해 Host Operating System의 Native Method Libraries와 상호작용 하는 것
- Heap 영역을 자세히 보고 GC 알고리즘 살펴보기
나와 비슷한 지적 호기심을 얻은 사람들을 위하여 해당 시리즈를 바친다.
※ 본 게시글은 공부하면서 작성했기에 틀린 부분이 있을 수 있습니다. 질문 사항이나 댓글로 알려주시면 감사하겠습니다.
'Language > Java' 카테고리의 다른 글
[Java의 실행원리 4편] Runtime 환경 - JVM Execute Engine (0) | 2023.03.21 |
---|---|
[Java의 실행원리 3편] Runtime 환경 - JVM Memory, Runtime Data Area (0) | 2023.03.20 |
[Java의 실행원리 2편] Runtime 환경 - JVM Class Loader (0) | 2023.03.18 |
[Java의 실행원리 1편] Compile-time 환경 (0) | 2023.03.14 |
- 클라우드 기반 백엔드 데브코스
- wsl2 오류
- Java Compile time
- string pool
- JIT Compiler
- Runtime Constant Pool
- 가변객체
- JVM Memory Areas
- 코딩부트캠프
- 백엔드 데브코스
- extension 다운 안됨
- 프로그래머스
- Java 실행원리
- CPU execution time
- flex box
- 컴퓨터 성능 지표
- Hotspot Compiler
- JVM Execute Engine
- flex vertical align
- 자바 동적로딩
- JVM Runtime Data Areas
- vscode 오류
- Dynamic Loading
- 프로그래머스 데브코스
- JVM
- Java 컴파일러 동작 원리
- JVM ClassLoader
- flex align
- flex 수직정렬
- JVM 실행원리
- Total
- Today
- Yesterday