9854jh.log
로그인
9854jh.log
로그인
Backend CS - #4 JVM
박주현
·
2023년 2월 20일
팔로우
0
CS
0
JVM 이란?
간단하게 말하자면, 자바 프로그램 실행환경을 만들어 주는 소프트웨어
자바 코드를 컴파일하여 .class로 만들게 되면 코드가 JVM에서 실행된다.
운영체제 ( OS ) 에 종속받지 않고 CPU가 자바를 인식하여 실행 할 수 있도록 함.
JVM 구조
클래스 로더(Class Loader)
실행 엔진 (Execution Engine)
인터프리터(Interpreter)
Just-In-Time 컴파일러
가비지 콜렉터(Garbage Collector)
런타임 데이터 영역(Runtime Data Area)
1. 클래스 로더
JVM 내로 .class 파일을 로드
링트를 통해 배치하는 작업 수행
런 타임시 동적으로 클래스를 로드
2. 실행 엔진
클래스를 실행 시킴
클래스 로더가 런타임 영역에 바이트 코드 배치 후 실행 엔진에 의해서 실행.
▶ 바이트 코드 : 가상 머신이 이해 할 수 있는 언어로 변환된 자바 소스 코드
종류
1. 인터프리터: 자바 컴파일러에 의해 변환된 바이트 코드를 읽고 한줄 씩 기계어로 해석하는 역할.
Just-In-Time 컴파일러 : 인터프리터 단점을 보완하기 위해 등장, 프로그램이 런타임 중에 여러번 호출되는 메소드들을 미리 만들어 둔 해석본을 이용해서 컴파일 하는 역할.
가비지 콜렉터 : 더이상 사용되지 않는 인스턴스를 찾아서 메모리에서 삭제함.
3. 런타임 데이터 영역
프로그램을 수행하기 위한 OS에서 할당받은 메모리 공간.
종류
1. PC Register : 스레드가 시작될 경우 생성되는 공간으로 스레드별로 하나씩 존재
▶ 스레드 : 프로세스 내에서 실제로 작업을 수행하는 주체. 모든 프로세스에는 한 개 이상의 스레드가 존재하며 작업실행.
JVM 스택 영역 : 프로그램 실행 과정에서 임시로 할당되었다가 메소드를 빠져 나갈시 소멸되는 데이터 저장하기위한 영역.
Native method stack : 바이트 코드가 아닌 실제 실행 할 수 있는 기계어로 작성된 프로그램 실행시키는 영역
Method Area : 클래스 정보를 메모리 공간에 올릴 경우에 초기화되는 대상을 저장하는 메모리 공간
Runtime Constant Pool : 상수 자료형 저장하여 중복 막는 역할.
Heap : 객체를 저장하는 가상메모리 공간으로 new연산자로 생성되는 배열과 객체를 저장
4. JRE와 차이점?
JRE : Java Runtime Environment 자바 런타임 환경으로 컴파일된 Java 프로그램을 실행
구성 : JVM + 자바 클래스 라이브러리
박주현
빌드업 막 시작하는 개발자
팔로우
이전 포스트
Backend CS - #3 Java의 구동원리
다음 포스트
Backend CS - #5 객체지향 프로그램
0개의 댓글
댓글 작성