Java/기초
[Java] JVM메모리 구조
oss0202
2021. 8. 8. 22:26
JVM
- 응용프로그램이 실행되면, 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 이 메모리를 용도에 따라 여러 영역으로 나누어 관리
- Stack
- 차곡차곡 쌓인다. LIFO(Last In, First Out)
JVM의 메모리 구조
- 메소드 영역(Method Area)
- 클래스 정보와 클래스 변수가 저장되는 곳
- 호출 스택(Call Stack)
- 메소드의 작업공간
- 메소드가 호출되면 호출 스택에 메모리 할당
- 종료되면 사용하던 메모리 반환함
- 힙(Heap)
- 인스턴스가 생성되는 공간
- new연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성됨
호출 스택의 특징
- 메소드가 호출되면 수행에 필요한 메모리를 스택에 할당받는다.
- 메소드가 수행을 마치면 사용했던 메모리를 반환
- 호출 스택의 제일 위에 있는 메소드가 현재 실행중인 메소드, 나머지는 대기중인 상태
- 아래에 있는 메소드가 바로 위의 메소드를 호출한 메소드이다.
호출 스택 실행과정
class CallStackTest {
public staic void main(String[] args) {
firstMethod();
}
static void firstMethod() {
secondMethod();
}
static void secondMethod() {
System.out.println("secondMethod()");
}
}