호출스택
- 메서드가 수행에 필요한 메모리가 제공되는 공간
- 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
- 하나의 스택에서는 하나의 메서드만 실행된다. 나머지는 대기중인 상태로 유지된다.
- 사실상 프로그램의 흐름(시작->종료)이라고 할 수 있을 것 같다.
위 설명을 표현하면 아래와 같다.
- main 메서드가 호출이 됨.
- println() 메서드를 main()이 호출 함.
- main()은 실행상태에서 대기상태로 전환되며, println이 실행상태가 됨.
- 즉, 아래 있는 메서드가 위의 메서드를 호출한 것.
- println()이 종료되고, 스택에 할당되어 있던 메모리가 해제
- main()이 다시 실행상태로 변환 됨.
위의 예시처럼, 기본적으로 하나의 스택에서는 하나의 메서드만 실행되는 것을 알 수 있다.(나머지는 대기상태)
쓰레드마다 스택은 가지고 있기 때문에, 멀티쓰레드를 통해서 여러 개의 스택을 다룰 수 있다.
* OS와 밀접한 연관있음(프로세스의 주소공간쪽 참고할 필요가 있을 것 같음)
'JAVA' 카테고리의 다른 글
10. 참조형 반환타입 (0) | 2022.09.20 |
---|---|
9. 기본형&참조형 매개변수 (0) | 2022.09.20 |
7. static 변수와 instance변수 (0) | 2022.09.17 |
6. 선언위치(클래스영역, 메소드영역)에 따른 변수의 종류 (0) | 2022.09.17 |
5. 클래스의 정의 (0) | 2022.09.17 |