본문 바로가기

CS Study

JAVA의 메모리 구조

1. JAVA의 메모리 구조

자바 프로그램이 실행되면 JVM은 운영체제로부터 해당 프로그램을 수행할 수 있도록 필요한 메모리를 할당 받습니다. JVM은 이 메모리를 메소드 영역, 힙 영역, 스택 영역으로 구분하여 관리합니다. 이를 런타임 데이터 영역이라고 하며 자바 애플리케이션 실행 시 데이터를 적재하는 영역입니다. 런타임 데이터 영역은 메소드 영역, 스택 영역, 힙 영역, 네이티브 메서드 스택 영역, Pc Register로 구성됩니다. 

 


  • 메소드 영역: 자바 프로그램에서 사용되는 클래스에 대한 정보와 함께 클래스 변수가 저장되는 영역입니다. JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일로 읽어 들여, 해당 클래스에 대한 정보를 메소드 영역에 저장합니다. JVM이 동작하고 클래스가 로드될 때 적재되어 프로그램이 종료될 때 까지 저장됩니다.
  • 힙 영역: 힙 영역은 자바 프로그램에서 사용되는 모든 인스턴스 변수가생성,저장되는 영역입니다. JVM은 자바 프로그램에서 new 키워드를 사용하여 인스턴스가 생성되면, 해당 인스턴스의 정보를 힙 영역에 저장합니다. 힙 역역은 JVM이 관리하는 프로그램 상에서 데이터를 저장하기 위해 런타임 시 동적으로 할당하여 사용하는 영역이며 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.
  • 스택 영역: 스택 영역에는 메소드 내에서 정의하는 지역변수의 데이터 값이 저장되는 공간입니다. 메소드 호출 시 마다 각 스택 프로임이 생성되어 메소드 안에서 사용되는 데이터들을 저장하고, 호출된 메소드의 매개변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장하고 있습니다. 이는 메소드 수행이 종료되면 함께 사라지게 됩니다.

'CS Study' 카테고리의 다른 글

서버리스 아키텍처  (0) 2023.05.15
Map과 List의 차이  (0) 2023.05.10
JDK란?  (2) 2023.05.08
ORM이란?  (0) 2023.05.05
DI와 IOC란?  (0) 2023.05.05