-
2022_07_29 JVM 이란?태투'S/SIL 2022. 7. 29. 19:54
Answer :
Java Virtual Machine의 약자로, 자바를 실행하기 위한 소프트웨어로 구현된 컴퓨터, 가상기계를 말한다. 자바로 작성된 어플리케이션을 실행시키기 위해 반드시 필요하다. JVM을 사용하면 운영체제에 상관없이 같은 코드를 사용할 수 있습니다.
(자바 소스 코드로 작성되어 있는 자바파일을 클래스 바이트 코드로 변환하여 각각의 운영체제에 맞게 실행 시킴)
1. JVM의 메모리 구조
1-1. 메서드 영역
프로그램 실행중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일을 읽어서 분석하여 클래스에 대한 정보와 그 클래스의 변수를 이곳에 저장한다.
1-2. 힙 영역
인스턴스가 생성되는 공간이다. 프로그램 실행 중 생성되는 인스턴스들이 모두 여기에 저장된다. 즉, 인스턴스 변수들이 생성되는 공간이다.
1-3. 호출스택
호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간결과 등을 저장하는데 사용되며, 메서드가 작업을 마치면 할당되었던 메모리공간은 반환되어 지워진다. 스택의 작동원리처럼 맨 위의 메서드가 현재 실행되는 메서드이며, 맨 위의 메서드가 완료된 후 메모리를 반납하고 그 밑에 있는 메서드가 실행이 된다. 당연히 아래에 있는 메서드가 위에 있는 메서드를 호출한 메서드이다.
2. JVM 동작 과정
- 프로그램이 실행되면 JVM은 OS로부터 메모리를 할당받는다. 위에 언급했던 메모리 구조에 따라 영역을 나누어 관리한다.
- 자바컴파일러가 자바 소스코드를 읽어들어 자바 바이트코드(.class)로 변환시킨다.
- Class Loader를 통해 class파일들을 JVM으로 로딩한다.
- 로딩된 class파일들은 Execution engine을 통해 해석된다.
- 해석된 바이트코드는 Runtime Data Area에 배치되어 실질적인 수행이 이루어지게 된다.
- 위의 실행과정 속에서 JVM은 필요에 따라 Thread Synchronization, GC같은 관리 작업을 수행한다.
'태투'S > SIL' 카테고리의 다른 글
2022_08_29 JAVA - I/O 클래스 BufferedReader 와 Bufferedwriter (0) 2022.08.29 2022_08_23 카카오 주소 REST API 요청 및 데이터 파싱 (0) 2022.08.23 2022_07_20 IoC가 무엇인가요? (0) 2022.07.20 2022_07_20 컬렉션 클래스에서 제네릭을 사용하는 이유 (0) 2022.07.20 2022_07_08 Process 와 Thread (0) 2022.07.08