일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로그래밍
- Java
- JShell
- 컴퓨터과학개론
- 기초코딩
- 초보코딩
- 이클립스
- Elk
- 자바
- Git
- 데이터베이스
- 초보코딩탈출
- eclips
- github
- 프로그래밍언어
- 메소드
- JAVA기초
- spring
- 배열
- 자바 스프링
- 스프링 기초
- 자바기초
- 코딩초보
- 제이쉘
- 자바프로그래밍
- 프로그래밍기초
- 알고리즘
- 리눅스
- 스프링
- 클래스
- Today
- Total
키보드워리어
JVM 구조에 관하여 본문
안녕하세요 【키보드 워리어】 블로그 방문자 여러분, 안경닦이입니다.
오늘은 JVM구조에 대해 살펴보겠습니다.
JVM이란?
Java Virtual Machine (JVM)은 Java 바이트코드를 실행하는 시스템으로 Java,Kotlin 언어로 개발된 프로그램이 다양한 컴퓨팅 플랫폼에서 작동하도록 하는 중요한 요소입니다.
코틀린을 다음에 자세히 설명할 수 있는 기회가 있으면 좋겠습니다.
간단히 설명하자면 코틀린의 주요 목표 중 하나는 Java와 100% 상호 운용성을 제공하는 것입니다. 이는 코틀린에서 기존 Java 라이브러리와 프레임워크를 사용할 수 있으며, 또한 코틀린 코드와 Java 코드를 같은 프로젝트에 섞어 사용할 수 있다는 것을 의미합니다.
JVM의 구조를 아래와 같이 주로 설명합니다.
JVM 구조
Class Loader Subsystem: 클래스 로더 서브시스템은 .class 파일에서 바이트 코드를 로드하고 링크를 통해 참조를 확인하며,
초기화를 통해 정적 변수에 디폴트 값을 제공하는 역할을 합니다. 이 서브시스템은 적재(Load), 연결(Link), 초기화(Initialize)의 세 가지 주요 단계로 구성됩니다.
런타임 : 이 영역은 JVM이 프로그램을 실행하는 데 필요한 메모리를 제공합니다. 다섯 가지 주요 컴포넌트가 있습니다. 메서드 영역(Method Area), 힙 영역(Heap Area), 스택 영역(Stack Area), PC 레지스터 (PC Registers), 네이티브 메서드 스택 (Native Method Stacks)
실행엔진: 이 엔진은 바이트코드를 실행합니다. 두 가지 방식이 있습니다 그것은 인터프리터 방식과 JIT 컴파일러 방식입니다. 인터프리터는 한 번에 하나의 바이트코드를 읽고 실행하지만, 이는 비효율적일 수 있습니다. 따라서 JVM은 JIT(Just-In-Time) 컴파일러를 사용하여 바이트코드를 네이티브 코드로 변환하고, 반복적으로 실행되는 코드(핫스팟)의 성능을 향상시킵니다.
네이티브 인터페이스: Java Native Interface (JNI)는 JVM에서 실행되는 Java 코드가 네이티브 애플리케이션과 상호 작용하도록 지원합니다. 예를 들어, Java 프로그램이 시스템 호출을 사용해 운영 체제 서비스에 액세스할 수 있도록 합니다.
네이티브 메서드 라이브러리: 이 라이브러리는 JVM에 필요한 네이티브 라이브러리의 집합입니다. 이는 Java Native Interface를 통해 실행되는 네이티브 코드를 포함합니다.
참고하시면 좋은 글, 영상
'개발 관련' 카테고리의 다른 글
[Build.gradle] (0) | 2023.06.07 |
---|---|
마이크로서비스 아키텍처란? (0) | 2023.05.26 |
포트 끄기 lsof 명령어 (0) | 2023.04.19 |
개발자인 내가 chatGPT 환영하는 이유 (0) | 2023.03.23 |
【Web Server】서버 운용법 기초(feat.생활코딩 유튜버님) (0) | 2022.05.08 |