✍️ Frame
Frame 이란?
- 스택(Stack) 에서 말하는 프레임(Frame) 은 메서드 호출과 관련된 데이터가 저장되는 작은 단위의 블록을 의미합니다.
- 각각의 메서드를 호출할 때마다 JVM은 해당 메서드의 실행에 필요한 정보들을 Stack의 Frame에 저장합니다.
✍️ 스택 프레임의 구성 요소
로컬 변수 (Local Variables)
- 메서드 내에서 선언된 변수들이 저장됩니다.
- 메서드가 실행되면서 사용되는 모든 지역 변수들이 여기에 할당됩니다.
매개변수 (Parameters)
- 메서드가 호출될 때 전달된 인자들이 저장됩니다.
- 메서드 내에서 매개변수들의 스택 프레임에 할당됩니다.
연산 스택 (Operand Stack OR Expression Stack)
- 메서드에서 계산되는 중간 결과들이나 연산이 필요한 값들이 저장됩니다.
- 수식 계산 중의 임시 값들이 저장될 수 있습니다.
메서드 호출 및 복귀 주소 (Method Invocation and Return Address)
- 현재 실행 중인 메서드의 호출 정보와 이전 메서드로 돌아갈 때의 반환 주소가 저장됩니다.
- 해당 정보는 매서드가 호출되고, 실행이 완료되면서 스택에서 제거될 때 사용됩니다.
✍️ 스택 프레임의 생명 주기
메서드 호출 시 생성
- 메서드가 호출될 때마다 해당 메서드의 스택 프레임이 생성됩니다.
- 메서드의 매개변수와 로컬 변수 등이 할당됩니다.
메서드 실행 종료 시 제거
- 메서드의 실행이 완료되면 해당 메서드의 스택 프래임이 스택에서 제거됩니다.
LIFO
- 후입선출(LIFO, Last In First Out) 구조를 가지고 있습니다.