코드가 실행되는 과정을 아주 자세하게 설명해주셨다.
https://www.youtube.com/watch?v=dBRU_-eLvpU&list=PLq8wAnVUcTFWQ4TpRPZRa5nj1VwfyO7st&index=15
*과정
함수가 실행되기전 안쪽의 변수의 공간 먼저 생성되는데 이 공간이 Stack이다
더이상 입력이 안되게 잠긴다
new가 살행되면서 Heap에 공간이 Exam()으로 인해 생성이되고 = 연산을 통해 exam에 참조된다.
input이 실행되면서 input 함수의 공간도 생성되고 매개변수 exam은 input(exam, 7)에 있는 exam을 참조한다.
(input 함수의 지역변수는 생략)
void input(Exam exam, int test)가 끝나면 다시 main함수의 input 쪽으로 돌아오게 되고
Stack에 쌓였던 메모리가 삭제된다.
main함수도 끝나면 Stack에 있는 main함수관련된 메모리도 삭제된다.
Heap은 남아있는데 계속 남아있으면 자바가 남아있는 메모리는 나중에 삭제함
'Java 코드연습' 카테고리의 다른 글
[뉴렉처] 인스턴스(Instance) 메소드 구현하기 (0) | 2021.10.21 |
---|---|
[뉴렉처] 함수들을 캡슐화하기 (0) | 2021.10.21 |
[뉴렉처] 함수 오버로딩(overloading) (0) | 2021.10.19 |
[뉴렉처] 가변 길이 배열 구현하기 (0) | 2021.10.19 |
[뉴렉처] 가변 길이를 위한 구조체 생성 (0) | 2021.10.18 |