Programming Language/Java
[JAVA] 호출 스택(call stack)
BS Kwak
2021. 7. 16. 19:08
stack이란?
밑이 막히고 위가 뚫린 상자라고 생각하면 된다. 위에 차곡 차곡 쌓인다.
따라서 꺼낼때는 제일 위에있는 것부터 차례로 꺼낸다.
★ 중간에 끼워 넣거나 아래 있는 것을 빼낼 수 없다
call stack이란?
메서드 수행에 필요한 메모리가 제공된 공간으로,
메서드가 호출되면 호출 스택에 메모리를 할당하고 종료 시 해제 한다.
예시로 설명하자면..
1. 호출 스택에 main( )이 있음
2. main()이 println()을 호출
3. 호출 스택에 아래서부터 차례로 main( ) , println( )이 쌓여 있음
이때, main( )은 대기상태, println( )은 실행상태
4. println( )이 종료
5. 호출스택에 main( )만 남음
따라서..
→ 아래에 있는 메서드가 위에 있는 메서드를 호출한 것
→ 하나의 스택에서는 한개의 메서드만 실행, 나머지는 대기 상태
코드 분석 시, 단계별로 호출 스택을 직접 그려보면 프로그램의 실행과정을 정확히 이해할 수 있음!