프로그래밍언어/Java
[Java 기본] 스택 영역
배세
2024. 7. 10. 16:20
스택 영역
아래 코드를 실행하여 스택 영역에 어떤 변화가 있는지 확인해보자
public class JavaMemoryMain1 {
public static void main(String[] args) {
System.out.println("main start");
method1(10);
System.out.println("main end");
}
static void method1(int m1) {
System.out.println("method1 start");
int cal = m1 * 2;
method2(cal);
System.out.println("method1 end");
}
static void method2(int m2) {
System.out.println("method2 start");
System.out.println("method2 end");
}
}
결과
=> 메인이 가장 먼저 실행됐으나 가장 나중에 종료된다. 스택 구조인 것을 확인할 수 있다.
정리
- 자바는 스택 영역을 사용해서 메서드 호출과 지역 변수(매개변수 포함)를 관리한다.
- 메서드를 계속 호출하면 스택 프레임이 계속 쌓인다.
- 지역변수(매개변수 포함)는 스택 영역에서 관리한다.
- 스택 프레임이 종료되면 지역 변수도 함께 제거된다.
- 스택 프레임이 모두 제거되면 프로그램도 종료된다.
* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.