JVM : Java Virtual Machine
바이트 코드인 자바를 해석하고 실행하는 가상의 운영체제
운영체제와 자바 사이의 중간단계 역하을 수행하는 것으로, 개발자는 운영체제를 신경쓰지 않고 자바 프로그램을 개발할 수 있음.
JVM의 구성
① 자바 인터프리터 : 바이트 코드 파일을 읽고 실행
② 클래스 로더 : 실행 중에 자바를 읽어 클래스를 로딩
③ JIT컴파일러 : 실행 중에 자바 바이트 코드를 기계어로 번역
③ 가비지 컬렉터 : 메소드 작동이 끝나면 자동으로 메모리를 회수. (메모리관리)
메모리 사용 영역
[메소드 영역]
클래스 로더로 읽어 클래스별로 런타임 상수풀, 필드, 메소드, 생성자 등을 분류해서 저장하는 데이터 영역
JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역
[힙 영역]
객체와 배열이 생성되는 영역으로 JVM의 스택 영역의 변수나 다른 객체의 필드에서 참조한다.
[JVM 스택 영역]
스레드마다 1개씩 존재하며 스레드가 생성될 때 할당.
(자바 프로그램이 실행될 때 추가적으로 스레드를 생성하지 않았다면, Main 스레드 1개만 존재함.)
자바의 실행단계
① 소스파일 작성 (.java)
② .java 파일을 컴파일러(javac.exe)가 바이트코드(.class)로 변환
③ .class 파일을 JVM(java.exe)가 운영체제에 맞는 기계어로 변역
*바이트코드 파일(.Class) : 자바 컴파일러에 의해 변환된 자바 소스 코드 파일로, 코드 명령어의 크기가 1바이트이기 때문에 자바 바이트 코드라 함.
JDK과 JRE
JRE : JVM + 표준 클래스 라이브러리
JDK : JRE + 개발에 필요한 도구
자바프로그램을 실행한다면 JRE만, 개발한다면 JDK가 필요함.
출처
신용권, 이것이 자바다, 한빛미디어
'JAVA > JAVA' 카테고리의 다른 글
제어문(조건문 if, 반복문 for/while) (0) | 2021.10.07 |
---|---|
연산자 Operator (0) | 2021.10.04 |
Objects 클래스 (0) | 2021.09.28 |
Object Class (0) | 2021.09.28 |
java.lang 패키지 (0) | 2021.09.27 |