반응형
OOP(Object Oriented Programming 객체 지향 프로그래밍)는 클래스 단위로 구현된다.
- OOP 언어 : Java, Python, C#...
자바 프로그래밍 할 때는 자바 파일(.java)로 작성하고
cmd에서든 IDE에서든 자바 파일을 컴파일하면 클래스 파일(.class)이 생성 된다.
- 컴파일 : 자바 소스코드를 바이트코드로 변환하는 과정
- 바이트코드 : JVM이 인식할 수 있는 기계어, 각 명령어가 1byte(8bit=2^8)로 이루어져 있다.
클래스 파일이 JVM으로 넘어가면 어떻게 실행될까?
JVM은 크게 세 가지 영역으로 구분 된다.
Class Loader
- 클래스 저장, 검증, 초기화
- Loading : 클래스 정보 런타임 데이터 영역에 저장
- Linking : 클래스 정보 검증하고 사용할 수 있게 준비
- Initializaion : 클래스 정보 초기화
Runtime Data Area
- 메모리 공간
- Method Area : 로드된 클래스 정보를 맨 처음 메모리 공간에 올릴 때, 초기화 되는 대상을 저장
- Heap : 참조 자료형 저장
- Thread :
- PC Register: 실행중인 명령 저장
- JVM Stack: 메서드가 수행될 때마다 하나의 스택 프레임이 생성되고 메서드가 종료되면 스택 프레임이 제거
- Native Method Stack: 자바가 아닌 다른 언어로 작성된 네이티브 메서드를 지원하기 위한 스택
Execution Engine
- 바이트코드 실행
- Interpreter : 바이트 코드를 읽고, 운영체제가 실행할 수 있도록 기계어로 변경
- JIT(Just In Time) 컴파일러 : 자주 실행되는 바이트 코드를 런타임 중에 기계어로 컴파일하여 사용
- Garbage collector : 메모리에서 더 이상 사용되지 않는 객체를 찾아 제거
반응형
'Dev > Java' 카테고리의 다른 글
[Java] && 와 &는 동일하지 않다. (0) | 2024.07.29 |
---|---|
[Java] 데이터 타입 (0) | 2024.07.28 |
[Java] 자바 프로그램은 어떻게 실행될까? (0) | 2024.07.27 |
[Java] 프로그래밍은 언제부터 시작? (0) | 2024.07.27 |
[Spring] Mac os에 Java 11과 IntelliJ 설치 (0) | 2021.06.05 |