본문 바로가기

_Programming/Java

Java.메모리영역

java.exe로 JVM이 시작되면 JVM은 운영체제에서 할당 받은 메모리 영역(Runtime Data Area)을 세부영역으로 구분해서 사용한다.

메소드 영역(Method), 힙(Heap)영역, 스택(Stack)영역이 바로 그 세부영역이다.

메소드(Method)영역

메소드 영역은 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역으로

클래스별로 데이터나 코드들을 분류해서 저장한다.

 

힙(Heap)영역

객체와 배열이 생성되는 영역으로

이 영역에 생선된 객체와 배열은 스택영역의 변수나 다른 객체의 필드에서 참조한다.

여기서 의미 없는 객체는 자동으로 쓰레기 수집기를 통하여 제거한다.

 

스택(Stack)영역

각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당되며

만약 자바 프로그램에서 추가적으로 스레드를 생성하지 않았다면 main스레드 하나만 존재하므로 스택도 하나만 존재한다.

 

스택(Stack)은 메소드를 호출할 때마다 프레임을 추가(push)하거나 제거(pop)한다.

변수가 이 영역에 생성되는 시점은 초기화 될 때이고, 선언된 블록 안에서만 스택에 존재하고 벗어나면 제거된다.

 

 

 

 

 

 

'_Programming > Java' 카테고리의 다른 글

Basic.Scanner  (0) 2020.12.12
Java.프로세스 & 스레드  (0) 2020.11.13
Java.Map  (0) 2020.11.12
Java.데이터타입  (0) 2020.11.12
Error. Duplicate method ~ in type ~  (0) 2020.11.05