JVM메모리 구조
▶ 메서드영역(Method Area)
- 클래스 정보와 클래스변수가 저장되는 곳
▶ 호출스택(Call Stack)
- 메서드의 작업공간. 메서드가 호출되면 메서드 수행에 필요한 메모리공간을 할당받고 메서드가 종료되면 사용하던 메모리를 반환한다.
▶ 힙(Heap)
- 인스턴스가 생성되는 공간. new연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성된다.
-메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당받는다.
-메서드가 수행을 마치고 나면 사용했던 메모리를 반환하고 스택에서 제거된다.
-호출스택의 제일 위에 있는 메서드가 현재 실행 중인 메서드이다.
-아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드이다.
예7)
public class CallStackTest {
public static void main(String[] args) {
firstMethod(); // static 메서드는 객체 생성없이 호출 가능하다.
}
static void firstMethod() {
secondMethod();
}
static void secondMethod() {
System.out.println("secondMethod()");
}
}
예7 스택 흐름
메서드가 호출되면 호출스택에 메모리 할당. 종료되면 해제
아래 있는 메서드가 위의 메서드를 호출한 것
맨 위의 메서드 하나만 실행 중, 나머지는 대기중
예8)
public class CallStackTest2 {
public static void main(String[] args) {
System.out.println("main(String[] args)이 시작되었음");
firstMethod();
System.out.println("main(String[] args)이 끝났음");
}
static void firstMethod() {
System.out.println("firstMethod 시작");
secondMethod();
System.out.println("firstMethod 종료");
}
static void secondMethod() {
System.out.println("secondMethod 시작");
System.out.println("secondMethod 끝");
}
}
'JAVA > 객체지향프로그래밍1' 카테고리의 다른 글
[JAVA] 참조형 반환타입 (0) | 2021.06.20 |
---|---|
[JAVA]기본형 매개변수와 참조형 매개변수 (0) | 2021.06.20 |
[JAVA] return문 (0) | 2021.06.20 |
[JAVA]메서드 (0) | 2021.06.20 |
[JAVA] 변수와 메서드-변수 (0) | 2021.06.19 |