[Java] 클래스의 함수 호출과 스택

2023. 3. 6. 19:29Java/Basic Java

프로그램 구조를 보면 크게 Text 영역과 Data(Heap, Stack) 영역으로 나뉜다. 

 

Stack : 함수의 호출이 발생하기전에 만들어짐 (예약석)

 

가장 먼저 static인 메인메서드가 호출된다. (만약 메인메서드보다 위에 static 변수가 있는경우, 변수가 먼저 호출됨)

메인메서드의 변수들이 Stack에 저장된다.

 

1,2번 순서에 따라 Stack 값이 채워진다.

 

Heap : 연산중에 연산자를 통해 생성되는 공간 (입석)

3번 new 연산자를 통해 Heap 영역에 데이터가 생성된다.

4번 Exam()을 통해 초기화 작업을한다. (최초 인스턴스 생성시 생성자를 통해 초기화 함)

5번 이때 Stak영역의 exam은 Heap 영역의 주소값(참조값)이 Heap에 있는곳을 가르키게 된다.

 

6번 메서드를 호출을 통해 매개변수(exam,7)값을 넣어줄때 Stack 영역에 공간을 마련해준다

 

공간이 생성되고 난뒤, 매개변수(exam,7)을 값을 넣으면 input메서드 매개변수 exam 또한 Heap 영역의 주소값을

가르키게된다. kor = test; 를 통해 7값이 kor에 들어가게된다.

 

input 메서드와, main 메서드가 종료되면 Stack 영역이 사라진다.

Heap 영역은 메인메서드가 종료되더라도 참조값이 있는경우 사라지지 않는다.(메모리 활용 중요)

현재는 Java에서 GC를 통해 참조되지 않는값은 자동으로 수거해준다.

'Java > Basic Java' 카테고리의 다른 글

[Java] 컬렉션 개념(스택)  (0) 2023.06.12
[Java] GUI 메소드 구현  (0) 2023.03.09
[Java] 스트림  (0) 2023.03.03
[Java] 람다식  (0) 2023.03.03
[Java] 제네릭스  (0) 2023.03.02