백엔드/JAVA

JVM 정리

빌럽스 2024. 10. 27. 22:11

JVM 이란?

자바를 실행하기 위한 가상 기계
OS에 종속적이지 않다

.java 파일 컴파일 과정

.java -> Java compiler(javac) -> .class(바이트 코드: JVM이 이해할 수 있는 언어) -> JIT Compiler*, 동적 번역* -> 바이너리 코드(기계어, 컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드)
* 인터프리터 방식으로 실행하다가 적절한 시점에 바이트코드 전체를 컴파일하여 기계어로 변경하고, 이후에는 더 이상 인터프리팅하지 않고 기계어로 직접 실행

JVM 구조

1. 클래스 로더(Class Loader)
JVM 내로 클래스 파일을 로드하고 링크를 통해 배치하는 작업을 수행

2. 실행 엔진(Excution Engine)
- 인터프리터 “ 자바 바이트 코드를 명령어 단위로 읽어서 실행
- JIT Compiler : 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일러
- 가비지 콜렉터 : 더 이상 사용되지 않는 인스턴스를 찾아 메모리에서 삭제

3. Runtime Data Area : 프로그램을 수행하기 위해 OS에서 할당받은 메모리 공간

 

 

참고

JDK(Java를 사용하기 위해 필요한 모든 기능 포함) JRE(JVM + 자바 클래스 라이브러리 등으로 구성, 컴파일된 Java 프로그램을 실행하는데 필요한 패키지) JVM

 

출처

https://doozi0316.tistory.com/entry/1%EC%A3%BC%EC%B0%A8-JVM%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%B8%EA%B0%80