[Java] OOP_호출 스택(Call Stack)

호출 스택(Call Stack)*

모든 프로그램언어에서 공통적인 것, 중요한 개념*
메소드 수행에 필요한 메모리가 제공되는 공간


Stack의 정의

Call Stack 이해를 돕기위한 Stack의 정의
Stack:밑이 막힌 상자, 위에 차곡차곡 쌓인다. 꺼낼 때는 맨 위에 있는 것부터 차곡차곡 뺀다.

JVM의 메모리 구조


메소드 영역(Method Area) :
클래스 정보와 클래스 변수가 저장되는 곳

호출 스택(Call Stack) :
메소드의 작업공간. 메소드가 호출되면 호출 스택에 메모리 할당, 종료되면 사용하던 메모리를 반환함

힙(Heap) :
인스턴스가 생성되는 공간. new연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성됨


호출 스택의 특징

  • 메소드가 호출되면 수행에 필요한 메모리를 스택에 할당받는다.
  • 메소드가 수행을 마치면 사용했던 메모리를 반환
  • 호출 스택의 제일 위에 있는 메소드가 현재 실행중인 메소드, 나머지는 대기중인 상태
  • 아래에 있는 메소드가 바로 위의 메소드를 호출한 메소드이다.

호출 스택 실행과정

class CallStackTest {
	public staic void main(String[] args) {
    	firstMethod();
    }
    static void firstMethod() {
    	secondMethod();
    }
    static void secondMethod() {
    	System.out.println("secondMethod()");
    }
}

코드를 보면서 단계별로 stack에 어떤 변화가 일어나는지 직접 그려봐야 한다.

좋은 웹페이지 즐겨찾기