본문 바로가기
언어/Java

(Java)JVM / JRE / JDK / 컴파일 동작 과정

by 흥부와놀자 2021. 7. 23.

JVM

- 자바 가상머신으로 .class파일을 메모리에 저장하고 실행하는 역활을 한다.

JRE

- 자바 런타임 환경으로 JVM에 필요한 라이브러리들이 모여있다.

JDK

- 자바 개발킷으로 JRE+ 개발에 필요한 라이브러리들이 모여있다.

 

 

 

컴파일 동작 과정

컴파일 과정

1. 이클립스와 같은 에디터로 작성된 .java파일을 javac같은 명령어로 빌드시 .class라는 반기계어 바이너리 파일로 바뀐다.

 

2. .class파일은 클래스 로더에 의해 JVM으로 로드되며 .class내용이 JVM 런타임 메모리로 저장되어 실행될수 있는 상태로 바뀐다. JVM 메모리영역엔 Stack(지역변수, 리턴), MeThod(메소드 주소, 정적변수, 클래스 주소), Heap(new로 인스턴스된 객체들) 등이 있으며 이곳에 각 용도에 맞는 내용들이 저장되는 것이다.

 

3. 실행은 두가지 방식으로 한다. 하나는 명령어를 하나씩 바로바로 실행시킬수 있는 인터프리터 방식과 처음 컴파일하여 캐시에 저장해 사용하는 Jit컴파일러 방식이다. 한번 사용하고 안쓰는 것들은 인터프리터 방식으로 초기에 실행시키고 나머지는 컴파일시켜서 재실행할때 실행속도를 높인다.

 

4. Java는 C, C++와 달리 메모리 해제를 직접하지 않고 가비지 컬렉터가 대신해준다. GC(가비지 컬렉터)는 JVM내부에서 Heap 영역의 안쓰는 데이터를 해제 시켜주는 역활을 한다.