JVM 메모리 구조

Kim Ji Yun·2021년 12월 6일
1

JVM이란?

JVM(Java Virtual Machine)은 자바 가상 머신으로 자바와 운영체제 사이에서 중계자 역할을 하며 자바가 운영체제 종류에 영향받지 않고 독립적으로 자바 프로그램을 실행시켜줌.

JAVA 프로그램의 실행 단계

  1. 자바 컴파일러에 의해 자바 소스 파일은 바이트 코드로 변환
  2. 바이트 코드를 JVM에서 읽어들임
  3. 어떤 운영체제든간에 프로그램을 실행할 수 있도록 해줌

JVM의 메모리 영역

1. Method(Static)

  • JVM에서 읽어들인 클래스와 인터페이스에 대한 런타임 상수 풀, 메서드와 필드, Static 변수, 메서드 바이트 코드 등을 보관

2. Runtime Constant Pool

  • Method Area 영역에 포함되지만 독자적 중요성을 띔
  • 클래스 파일 constant_pool 테이블에 해당하는 영역
  • 클래스와 인터페이스 상수, 메서드와 필드에 대한 모든 래퍼런스 저장
  • JVM은 런타임 상수 풀을 통해 해당 메서드나 필드의 실제 메모리 상 주소를 찾아 참조

3. Heap Area

  • 프로그램 상에서 데이터를 저장하기 위해 런타임 시 동적으로 할당하여 사용하는 메모리 영역
  • new 연산자를 통해 생성한 객체 또는 인스턴스와 배열을 저장
  • JVM이 관리

4. Stack Area

  • 선입후출(FILO) 구조
  • 메서드 호출 시 생성되는 스레드 수행정보를 기록하는 Frame 저장
  • 메서드 정보, 지역변수, 매개변수, 연산 중 발생하는 임시데이터 저장

5. PC 레지스터

  • CPU 명령어를 수행하며 필요한 정보를 레지스터에 저장
  • 연산 및 결과값을 메모리에 전달하기 전 CPU 내 기억장치

6. Native Method Stack Area

  • 자바 외 언어로 작성된 네이티브 코드를 위한 메모리
  • C/C++ 등의 코드를 수행하기 위한 스택
  • native 메서드의 매개변수, 지역변수 등을 바이트코드로 저장

0개의 댓글

관련 채용 정보