[Java] Stack Frame

G·2024년 6월 22일
0

Java

목록 보기
5/21
post-thumbnail

✍️ 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) 구조를 가지고 있습니다.
profile
기!술! 블로그

0개의 댓글