.java > JDK에 포함됨 javac(java complier)를 통해 컴파일된다.
JVM이 이해할 수 있는 바이트 코드로 변환되어 .class 파일 생성
지금부터 JVM이 담당. 클래스 로더가 바이트 코드를 JVM메모리에 동적으로 로드
로드된 바이트 코드는 Method Area에 저장.
실행 엔진이 로드된 바이트 코드를 실행.
바이트 코드 > 인터프리터와 JIT컴파일러를 함께 사용하여 기계어로 변환.
인터프리터는 바이트 코드를 한 줄씩 읽어서 실행하는 방식. JIT컴파일러는 자주 실행되는 메서드를 감지하면 해당 메서드 전체를 네이티브 코드로 변환하여 캐싱한다.
클래스 로더가 바이트 코드를 JVM메모리에 동적으로 로드?
프로그램이 시작될 때 모든 클래스를 한꺼번에 로드하는것이 아니라
런타임 시점에 필요한 메서드만 로드하는 것을 의미.
- 인스턴스 생성
- static 메서드나 변수 사용, 값 할당
바이트 코드 > 인터프리터와 JIT컴파일러를 함께 사용
- 인터프리터 : 바이트 코드를 한 줄 씩 읽어서 실행 > 초기 실행 속도가 빠름. 하지만 같은 코드가 반복적으로 실행될 경우 매번 해석해야 해서 성능 저하.
- JIT컴파일러는 자주 실행되는 메서드를 네이티브 코드로 변환하여 캐싱하는 역할.
'cs(with 매일메일)' 카테고리의 다른 글
| [260209월] RDB에서 페이징 쿼리의 필요성을 설명해 주세요. (0) | 2026.02.09 |
|---|---|
| [260206금] 낙관적 락과 비관적 락에 대해 설명해주세요. (0) | 2026.02.06 |
| [260204수] 가상화에 대해 설명해주세요. (0) | 2026.02.04 |
| [260203화] JCF 자료구조의 초기 용량을 지정하면 좋은 점이 무엇인가요? (0) | 2026.02.03 |
| [260202월] 멀티 태스킹 시스템의 한계에 대해서 설명해주세요. (0) | 2026.02.02 |