JAVA/JAVA

JVM 자바 가상머신

호두밥 2021. 10. 2. 00:58

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가 필요함.

 

출처

자바 프로그래밍, TCP SCHOOL

The JIT compiler, IBM

신용권, 이것이 자바다, 한빛미디어

 

 

 

'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