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 |