JVM
1. JVM(Java Virtual Machine)
자바 가상 머신으로, 컴퓨터가 자바 프로그램을 실행할 수 있도록 도와주는 S/W
이다. 바이트 코드로 변환된 Java 파일을 한 줄씩 읽어 해석한 후 실행한다.
이로 인해 자바로 개발된 프로그램은 CPU나 운영체제의 종류와 관계없이 자바 가상 머신을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있다.2. 내부 동작 원리
Java 파일 -javac(컴파일러) ➡️ .class ➡️ java 실행 ➡️ JVM start

- javac : 바이트 코드
- JDK
- 자바 프로그램을 개발하는데 필요한
모든 도구와 라이브러리
의 집합 - 컴파일 실행파일 / 실행 가능한 바이트 코드로 변환
- 컴파일러, 디버거,
JRE
- JRE
- 자바 프로그램을 실행하는데 필요한
환경
을 제공 - 바이트 코드를 해석, 실행
JVM
, 라이브러리들
3. JVM Start
3.1. 클래스 로드(.class 파일 - RAM)
JVM이 실행 시점에서 필요한 클래스를 찾아서 메모리로 로드하는 과정이다.
👉 JVM이 관리하는 영역
2.2. static 로드(정적 변수)
static이 적힌 코드를 메모리에 저장하는 것이다.
static은 실행의 처음부터 끝까지 존재하므로, 어떤 것을 static으로 존재시킬 지 생각해봐야 한다.
- 'main' 이전에 이미 셋팅이 되어 있어야 한다.
3.3. 'main'을 찾는다(static 로드가 된 공간에서)
static - main은 1set
이다.
main은 실행되지 않은 상태(모든 코드 비 실행 상태)이며, 메모리에 뜨지 않는다.3.4. main의 body 실행
main의 body를 찾아 코드를 실행한다.
3.5. JVM 종료
main 메소드가 종료되면 JVM의 실행도 종료되며, 모든 메모리 리소스가 해제되므로 static도 소멸된다.
- main 메소드가 종료되어도 다른 스레드가 실행중이라 JVM이 종료되지 않는다면, static는 계속 유지된다.
❔
데몬 프로세스 : 실행이 된 후 스스로 종료되지 않는 프로세스
예) TV, 웹사이트(내가 x를 눌리기 전까지는 스스로 종료되지 않는다)
Share article