스택과 큐 자료 구조

  • 스택 구조
    • 먼저 넣은 것이 바닥에 들어가고, 나중에 넣은 순으로 빼야 한다.
    • 후입 선출 방식이다.
     

  • 큐 구조
    • 먼저 넣은 것이 먼저 나가는 방식 넣은 순서대로 차례대로 나간다.
    • 선입 선출 방식이다.


스택 영역

  • 스택 구조 활용 예
package memory;

public class JavaMemoryMain1 {
    public static void main(String[] args) {
        System.out.println("main start");
        method1(10);
        System.out.println("main end");
    }

    static void method1(int m1) {
        System.out.println("method1 start");
        int cal = m1 * 2;
        method2(cal);
        System.out.println("method1 end");
    }

    static void method2(int m2) {
        System.out.println("method2 start");
        System.out.println("method2 end");
    }
}
// 코드를 실행해보면
main start
method1 start
method2 start
method2 end
method1 end
main end

→ 먼저 실행 된 main 이 마지막에 끝나는 것을 볼 수 있다 .

  • 정리
    • 자바는 스택영역을 사용하여 메서드 호출과 지역변수(매개변수 포함)를 관리 한다.
    • 메서드를 계속 호출하면 스택 프레임이 계속 쌓인다.
    • 스택 프레임이 종료되면 지역 변수도 함께 제거 된다.
    • 스택 프레임이 모두 제거되면 프로그램도 종료된다.

스택 영역과 힙 영역

  • 스택영역에서 힙영역의 메모리를 참조하는 메서드가 모두 종료 되면 힙 영역에 GC가 참조가 사라진 인스턴스 메모리를 제거한다.

→ 2개의 스택 영역에서 힙 영역 객체(인스턴스)를 참조

→ 스택의 후입 선출 방식으로 method2 가 종료 되어 힙 영역 참조 하나가 끊기고

→ method1 이 종료 되면서 힙 영역 객체를 참조하는 것이 모두 사라지게 된다.

→ 참조 하는 것이 없는 힙 영역의 객체는 GC(가비지 컬랙션)에 의해 제거 된다.


'자바 공부 > [ 完 ] 자바 실전 - 기본편' 카테고리의 다른 글

7-4 static 메서드  (0) 2024.03.09
7-3 static 변수  (0) 2024.03.09
7-1 자바 메모리 구조  (0) 2024.03.09
6. 접근 제어자  (0) 2024.03.07
5. 패키지  (0) 2024.03.06

+ Recent posts