본문 바로가기
❤️‍🔥TIL (Today I Learned)

[TIL] 2022-11-30(23day)

by elicho91 2022. 11. 30.

JVM 구조, 메모리와 코드의 흐름


👉 JVM 이해하기

1. 코드가 실행되는 과정

작성한 .java 파일 → 자바 컴파일러 → 바이트 코드(.class) → JVM → JVM(Java Virtual Machine)

 

2. JDK 구조

 

 * JRE (자바에서 제공되는 기본 라이브러리들이 포함)

 

👉 메모리와 실행 엔진

1. JVM이 사용하는 메모리 영역 

 * JDK 구조

 

 * JVM 구조

# 클래스 로더 서브시스템 : .class 에서 바이트코드를 읽고 메모리에 저장.

# 메모리

   - 메소드 영역(Method Area).

  - 힙 영역에는 객체를 저장.

  - 스택 영역에는 스레드마다 런타임 스택을 만들고, 스택 프레임이라 부르는 블록을 쌓는다.

# 실행엔진

  - JIT 컴파일러가 반복되는 코드를 재사용해서 속도를 높인다.

  - GC : 더이상 참조되지 않는 객체를 모아서 정리.

# JNI(Java Native Interface)

  - C, C++, 어셈블리로 작성된 함수를 사용할 수 있는 방법 제공.

  - 자바에서 기본으로 제공되는 메서드에 native 키워드를 가 붙은 친구.

# 네이티브 메소드 라이브러리.

  - C, C++로 작성된 라이브러리.

 

2. 클래스 로더와 static 영역

# Loading

  - 클래스 로더가 .class 파일을 읽고 데이터를 “Method Area”영역에 저장

# Linking

  - https://dzone.com/articles/jvm-architecture-explained

# Initialization

  - “Static“ 붙은 친구들 초기화. static 블럭 실행.

 

3. 메모리 영역

'❤️‍🔥TIL (Today I Learned)' 카테고리의 다른 글

[TIL] 2022-12-02(25day)  (0) 2022.12.02
[TIL] 2022-12-01(24day)  (0) 2022.12.01
[TIL] 2022-11-29(22day)  (0) 2022.11.29
[TIL] 2022-11-28(21day)  (0) 2022.11.28
[TIL] 2022-11-25(20day)  (0) 2022.11.27

댓글