쯔이's Dev

static(1) - 자바 메모리 구조 본문

카테고리 없음

static(1) - 자바 메모리 구조

jjhim531 2024. 7. 31. 01:42
반응형

<자바 메모리 구조>

* 크게 메서드 영역 / 스택 영역 / 힙 영역  이렇게 3가지로 나눌 수 있다.

- 메서드 영역 : 클래스 정보를 보관.

- 스택 : 실제 프로그램이 실행되는 영역. 메서드를 실행할 때마다 스택프레임이 하나씩 쌓인다.

- 힙 : 객체(인스턴스)가 생성되는 영역. new 명령어를 사용하면 이 영역을 사용한다. 배열도 이 영역에 생성된다.

 

< 메서드 영역(Method Area) >

* 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.

  • 클래스 정보 : 클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다.
  • static 영역 : static 변수들을 보관.
  • 런타임 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관. 

< 스택 영역(Stack Area) >

  • 후입선출(LIFO, Last In First Out) : 나중에 넣은 것이 가장 먼저 나오는 것.
  • 자바 실행시 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역변수, 중간 연산 결과, 메서드 호출정보 등을 포함한다.
  •  
  • 스택 프레임 : 메서드를 하나씩 호출할 때마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 해당 스택 프레임이 제거된다.
  • 더 정확히는 각 쓰레드별로 하나의 실행 스택이 생성된다. 따라서 쓰레드 수 만큼 스택영역이 생성된다.

< 힙영역(Heap Area) >

  • 객체(인스턴스)와 배열이 생성되는 영역. 가비지 컬렉션(GC)이 이루어지는 주요 영역. 더이상 참조되지 않는 객체는 GC에 의해 제거된다.

 

728x90
반응형