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( )만 남음

 

따라서.. 

→ 아래에 있는 메서드가 위에 있는 메서드를 호출한 것

→ 하나의 스택에서는 한개의 메서드만 실행, 나머지는 대기 상태

 

코드 분석 시, 단계별로 호출 스택을 직접 그려보면 프로그램의 실행과정을 정확히 이해할 수 있음!