You are a developer, not a coder.

Stack에 대해서 본문

Development Basic

Stack에 대해서

Mattmk 2020. 5. 28. 00:29
SMALL

1. Stack의 기본개념

  • 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역 이다.
  • Stack은 요소를 데이터 구조의 한쪽 단에서만 저장/접근 할 수 있는 컬렉션 이다.
  • LIFO (Last - In - First - Out) 즉, 후입선출의 구조로 많이 알려져 있는 컬렉션 이다.
  • 가장 최근에 입력된 데이터를 top 이라고 하며, Stack은 top에서만 삽입, 삭제, 읽기 동작이 발생할 수 있다.
  • 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.
  • Stack 영역에 저장되는 함수의 호출 정보를 스택 프레임 (Stack Frame)라고 한다.
  • 컴파일 시에 크기가 결정된다.

 

Stack 구조

2. Java에서의 Stack Method 종류

Method 종류 동작 설명
pop() Delete, Read Stack의 맨 위의 객체를 제거하고 그 객체를 반환한다.
push(data) Insert Stack의 맨 위의 객체를 추가한다.
peek() Read Stack 맨 위에 있는 객체를 제거하지 않고, 그 객체를 반환한다.
Boolean empty() Stack Values Check 현재 Stack이 비어 있는지를 확인한다.

 

3. Stack 구현 방법 2가지

정적 메모리 할당

  장점

  - 메모리를 해제하지 않음으로써 메모리 누수와 같은 문제가 발생하지 않는다.

  - 정적 할당된 메모리는 실행 도중에 해제되지 않고, 프로그램이 종료할때 운영체제가 자동으로 회수한다.

 

  단점

  - 메모리의 크기가 하드 코딩되어 있어서 크기를 변경할 수 가없다.

  - Stack은 기본적으로 정적 메모리 할당 이므로, 동적 할당에 비해 할당 받을 수 있는 메모리에 제약을 받는다.

 

  종류

  - array를 이용한 구현 방법

 

 

 

동적 메모리 할당

  장점

  - 메모리를 해제하지 않음으로써 메모리 누수와 같은 문제가 발생하지 않는다.

  - 상황에 따라 원하는 크기만큼의 메모리가 할당되므로 효율적이고

    이미 할당된 메모리라도 언제든지 크기를 조절 할 수 있다.

 

  단점

  - 더 이상 사용하지 않을 때 명시적으로 메모리를 해제해 주어야 한다.

  - 메모리가 꽉 찼을시 Exception 떨어지나, 자바는 GC가 해결해 줌으로써 이 단점을 보완하였다.

 

  종류

  - LinkedList를 이용한 구현 방법

* 참고

  • ArrayList, LinkedList 비교

 

  • JVM 메모리 구조

2020/05/25 - [Backend-Languages/Java] - JVM의 메모리 구조

  • Heep

https://mattmk.tistory.com/44

LIST

'Development Basic' 카테고리의 다른 글

Cookie vs Session  (0) 2020.06.03
Heap에 대해서  (0) 2020.05.28
AWS DynamoDB [StreamViewType]  (0) 2020.02.25
REST API에 대해서  (0) 2020.02.05
REST에 대해서  (0) 2020.02.03
Comments