JVM이 자바 소스코드를 어떻게 OS 에서 실행하는지 과정
1. 자바 소스코드인 .java 파일을 컴파일러가 자바 바이트 코드인 .class로 변환합니다.
2. .class 코드를 JVM의 클래스 로더에게 보냅니다.
3. 클래스 로더는 JVM 런타임 데이터 영역으로 로딩하여 JVM의 메모리에 올립니다.
Runtime Data Area 가 포함하는 영역
( Method, Heap, Stack, PC Register, Native Method Stack )
Method Area (=Class Area)
- Method / Class / Code / Static Area 라고 불림
- 클래스 정보
- 변수 정보
- 메소드 정보
- static 변수
- constant pool (상수 풀)
Heap Area
- new 키워드로 생성된 객체와 배열이 저장되는 영역
- Method Area에 load된 클래스만 생성이 가능하다.
- GC의 주요대상이 된다.
- 효율적인 GC를 위해 영역이 분리되어 있다.
- 런타임시 할당된다.
Stack Area
- 기본 자료형을 생성할 때 저장하는 공간이다.
- 지역변수, 파라미터, 리턴값, 연산에 사용되는 임시 값등이 생성되는 영역
- 메서드 호출시마다 개별적으로 스택이 생성되며 종료시 영역에서 해제된다.
- 컴파일 타임 시 할당된다.
런타임과 컴파일타임
컴파일타임 : 소스코드가 기계어로 변환되어 실행 가능한 프로그램이 되는 과정
런타임 : 컴파일타임 이후 프로그램이 실행되는 때
PC Register
- 스레드가 생성될 때마다 생성되며 현재 스레드가 실행되는 부분의 주소와 명령을 저장하는 영역
- 스레드가 돌아가면서 수행할 수 있게 한다.
Native Method Strack
- 자바 외 언어로 작성된 네이티브 코드를 위한 메모리 영역
'IT 정보 > Java' 카테고리의 다른 글
자바 객체지향 프로그래밍 (OOP)란!? - 정리! (24) | 2022.05.22 |
---|---|
Static 변수란!? - 정리 (4) | 2022.05.22 |
[Java] enum (0) | 2022.05.19 |
[Java] 애너테이션 ( Annotation ) (7) | 2022.05.19 |
[Java] 람다 (Lambda) (9) | 2022.05.19 |