본문 바로가기
카테고리 없음

자바 JVM 내부 구조와 메모리 구조에 대하여

by nono22 2023. 11. 26.

JVM 내부 구조와 메모리 구조

JVM(Java Virtual Machine)이란?

JVM은 자바 언어로 작성된 애플리케이션을 실행하기 위한 가상 머신이다. 자바 애플리케이션이 운영체제에 종속되지 않고 어떤 플랫폼에서도 실행될 수 있도록 하기 위해 설계되었다.

JVM 내부 구조

JVM은 크게 세 가지 영역으로 나눌 수 있다.

  1. 클래스 로더(Class Loader) : 클래스 파일을 JVM에 동적으로 로드하고 링크하는 역할을 담당한다.
  2. 실행 엔진(Execution Engine) : 클래스 로더를 통해 로드된 바이트코드를 해석하고 실행한다.
  3. 런타임 데이터 영역(Runtime Data Area) : JVM이 프로그램을 수행하는 동안 사용하는 데이터를 저장하는 메모리 영역이다.

런타임 데이터 영역

런타임 데이터 영역은 크게 다음과 같이 나뉜다.

  1. 메소드 영역(Method Area) : 클래스 로더에 의해 로드된 클래스, 메소드, 상수, 필드 정보 등이 저장된다.
  2. 힙(Heap) : 객체와 배열이 여기에 저장된다. 가비지 컬렉션은 힙 영역에서 진행된다.
  3. 스택(Stack) : 스레드 마다 자신만의 스택이 생성되며, 메소드 호출 시마다 프레임이 스택에 저장된다.
  4. PC 레이지스터(Program Counter Register) : 스레드마다 현재 실행 중인 바이트코드의 주소를 가리킨다.
  5. 네이티브 메소드 스택(Native Method Stack) : 자바 외의 언어로 작성된 네이티브 코드를 실행하기 위한 스택이다.

메모리 관리

JVM은 가비지 컬렉션(Garbage Collection)을 통해 사용되지 않는 객체를 자동으로 제거한다. 이를 통해 메모리 누수를 방지하고 메모리를 효율적으로 관리할 수 있다. 또한, JVM은 스택 프레임을 통해 메소드 호출과 복귀에 필요한 정보를 관리한다. 스택 프레임은 메소드의 지역 변수, 매개변수, 리턴 값 등을 저장한다.

결론

JVM은 자바 애플리케이션을 실행하기 위한 가상머신으로, 클래스 로더, 실행 엔진, 런타임 데이터 영역 등으로 구성된다. 런타임 데이터 영역은 메소드 영역, 힙, 스택, PC 레이지스터, 네이티브 메소드 스택으로 구성되어 있으며, JVM은 가비지 컬렉션을 통해 메모리를 효율적으로 관리한다.

댓글