Java 메모리 - 스택과 큐 자료구조

스택 자료구조

스택에서 블럭을 3개 넣는 경우와 꺼내는 경우를 살펴보도록 한다.

블럭을 통에 담는 경우를 생각한다.
1번 블럭부터 3번까지 넣는 경우 다음과 같다.

스택, 블럭을 통에 넣기

블럭 1, 2, 3 세 개를 통에 담는 순서를 살펴본다.

1번 블럭 넣기

2번 블럭 넣기

3번 블럭 넣기

블럭은 1 -> 2 -> 3 순서로 넣게 된다.

스택, 블럭을 넣은 통에서 블럭 빼기

블럭을 넣은 통에서 블럭을 빼면 다음과 같이 꺼내도록 한다.

3번 블럭 꺼내기

2번 블럭 꺼내기

1번 블럭 꺼내기

블럭을 꺼내야 하는 경우 위에서부터 꺼내야한다.

블럭 3개를 통에 넣고 꺼내는 순서를 정리하면 다음과 같다.
1(넣기) -> 2(넣기) -> 3(넣기) -> 3(빼기) -> 2(빼기) -> 1(빼기)

이러한 구조는 LIFO 이라 한다.

LIFO(Last In First Out)

자료구조에서 스택이며, 가장 마지막에 넣었던 것을 첫 번째로 나가는 것을 말한다.

큐(Queue) 자료구조

큐에서 블럭을 3개 넣는 경우와 꺼내는 경우를 살펴보도록 한다.

큐(Queue), 블럭을 파이프라인에 넣기

블럭을 앞과 뒤가 열린 파이프라인에 넣어보도록 한다.

1번 블럭 넣기

2번 블럭 넣기

3번 블럭 넣기

큐(Queue), 블럭을 파이프라인에서 꺼내기

이제 3개 들어간 파이프라인에서 꺼낸다.

1번 블럭 꺼내기

2번 블럭 꺼내기

3번 블럭 꺼내기

블럭을 큐를 사용한 경우 정리하면 다음과 같다.
1(넣기) -> 2(넣기) -> 3(넣기) -> 1(빼기) -> 2(빼기) -> 3(빼기)

이를 자료구조에서 FIFO 이라 한다.

FIFO(First In First Out)

자료구조에서 큐(Queue)이며, 가장 첫 번째에 넣었던 것을 첫 번째로 나가는 것을 말한다.

자바의 프로그램 런타임에 메소드를 호출한 경우 스택 영역에서 스택 자료구조 LIFO 적합하여 사용하고 있다.