본문 바로가기
Java

자바 중급 010. 스택이란? , 콜스택(call stack)

by Smart Factory in 2020 2021. 8. 24.
728x90
반응형

안녕하세요. 스마트 팩토리입니다.

자바 중급 010. 스택이란? , 콜스택(call stack)에 대해 알아보겠습니다. 

1. 스택이란?

가. 스택(stack)?

 -모든 원소들의 삽입과 삭제가 리스트의 한쪽 끝에서만 수행되는 제한 조건을 가지고 있는 선형구조 
- push down stack이라고도 함. 
- push: 스택의 top에 자료를 삽입하는것 (입력)
- pop:  스택의 top으로 부터 원소를 제거하는 것(출력) 

 

 

스택 구조에서 변수 a , b를 넣으려면  입력을 할때는 a가 먼저 그 다음이 b이다. 하지만 출력을 할때는 b가 먼저 나오고 다음에 a가 출력이 된다. 

나. 스택 구조 -자료가 많은 경우 

 

 

스택 구조에 a, b, c를 넣는 경우에는 순차적으로 보면 빈 그릇에서 다시 빈그릇까지 되는 과정에서 a , b, c 담겨지고 출력될때는 거꾸로, c, b, a 가 출력이 된다. 

 

다. 콜스택 (call stack)-호출스택

-메서드가 실행될때 필요한 메모리가 제공되는 공간
-메서드가 호출되면 호출스택에 메모리가 할당되고 종료되면 해제된다. (생성과 소멸)

메인 메소드에서 println()메소드가 실행되어 'callstack' 을 출력하게됩니다. 이를 순차적으로 보면 

main 메소드가 실행되고 이후에 println 메소드를 호출하게 되어 println 메소드가 실행되게 됩니다. 순서 2번에서 메인 메소드가 실행되면서 순서 3번에서 다음 메소드인 println 메소드를 호출하게되고 ,println메소드가 실행되는 동안 대기를 하게 됩니다. println메소드가 실행되어 끝이 나면 소멸( 메모리에서 삭제)됩니다. 순서 4번에서는 메인 메서드가 실행되면서 5번으로 마무리되어 프로그램이 종료가 됩니다. 

 

 콜스택 즉 호출 스택은 결과적으로 아래 있는 메소드가 위 메소드를 호출하여 실행하게 하는 것이라고 볼 수 있습니다. 그리고 위 올라온 메서드가 실행되어 마무리가 되어야 아래 있는 메소드가 실행되는 구조를 말합니다. 

 

아래 매소드가 위 매소드를 호출하면, 위에 호출된 메소드는 실행되고 해제되어야 다시 아래에 있는 메소드가 실행되면서 종료되면 메모리에서 해제가 됩니다. 

package Ex01_03IfSwich;

public class ex01_callstack {

public static void main(String[] args) {
 System.out.println(" callstack");
}

}

 

728x90
반응형

댓글