[JAVA]JVM 구조

Dex·2022년 12월 14일
0

JAVA

목록 보기
3/4

JVM(Java Virtual Machine) 이란?

  • 자바 컴파일러(javac)에 의해 소스코드(.java)로 부터 변환된 자바 바이트코드(.class)를 해당 OS에 맞게 해석해주는 역할을 수행한다.
  • 자바의 특징이라고 볼수 있는데 JAVA란 여기서 확인 가능하다.

JVM의 구조

  • JVM의 구조는 크게 네가지의 구성요소로 볼 수 있다.
  1. Class Loader
  2. Execution Engine
  3. Runtime Data Area
  4. Garbage Collectors(GC)

Class Loader란

  • 바이트 코드를 실행할 때 class 객체를 메모리 상에 로드하는 요소, 클래스의 인스턴스를 생성하면, Class Loader에 의해 메모리에 로드한다.

Execution Engine란

  • Class Loader에 의해 메모리에 로드된 바이트코드를 실행하는 요소이고 Runtime Data Area에 배치된 바이트 코드는 Execution Engine에 의해 실행이 된다.

Runtime Data Area란?

  • JVM의 메모리 영역으로 Method 영역과, Heap 영역은 모든 스레드에서 공유하며, 스택 영역과 네이티브 메서드 스택 영역 등은 스레드 별로 독립적인 메모리 공간을 갖습니다.
  • Method 영역이란 프로그램 실행 중 클래스가 사용되면 JVM은 해당 글래스 파일을 읽어서 분석하여 클래스의 인스턴스 변수, 메소드 코드 등을 Methode Area에 저장한다. 이때 클래스 변수도 이 영역에 함께 생성된다.
  • Heap 영역이란 사용자가 관리하는 인스턴스가 생성되는 공간으로 객체를 동적으로 생성하면 인스턴스가 Heap 영역의 메모리에 할당되어 사용되고, Garbage Collectors의 대상이 되는 영역이다.
  • Stack 영역이란 프로그램 실행 중 발생하는 메서드 호출과 복귀에 대한 정보를 저장한다.
  • Native Method Stack 영역이란 자바 이외의 C언어와 같은 언어가 필요한 경우 JNI 기술을 통해서 네이티브 메소드들이 바이트 코드로 변환되면서 사용되고 기록되는 영역이다.

Garbage Collectors(GC)란?

  • Heap 영역에서 생성된 객체들 중에 더이상 참조하지 않는 메모리를 정리해주는 역할을 한다.

Reference
Blog
Blog

profile
성장하는 개발자

0개의 댓글