본문 바로가기

CS 과목(CS科目)/운영체제(OS)

Stack Frame( in Java ) with THIS pointer

함수/메서드가 호출이 될때마다 메모리의 stack 영역에는 각 함수의 중간값들을 저장하기 위하여 stack frame이 생성이 된

다. 

그리고 해당 함수/메서드가 종료가 되면 Frame Pointer를 사용하여 이전 함수/메서드로 실행의 흐름이 바뀐다.

 JAVA, C++에서는

메서드가 호출이 될 때,

생성자가 호출이 될때,

THIS 포인터가 Stack Frame에 할당이 된다는 사실을 오늘 처음 알았기에 , 블로

그에 정리를 해 본다.

1. 생성자 호출

new Counter() 생성자도 메서드이기에 stack frame이 할당이 되고, this 레퍼런스가 만들어 지고 그 레퍼런스는 객체의 주

소를 가리키게 된다.  

생성자의 실행이 종료되면, main 메서드의 stack frame의 c 레퍼런스에 this 값이 저장이 된다.

2. 메서드 호출

만약 main 메서드에서 객체 c의 메서드가 호출이 되면 stack frame은 어떻게 될까?

새로운 stack frame이 할당이 된 뒤, this라는 이름으로 객체를 가리키는 레퍼런스가 할당이 돼, 그 객체에 저장된 필드값들

을 가지고 메서드를 실행을 한다.