스택
-
JVM 메모리 - heap, stackTECH/Java 2022. 8. 7. 11:24
JVM의 메모리는 크게 힙, 스택, 메타 영역으로 나뉜다. 그 중 스택과 힙 영역에 대해 먼저 알아보자. Stack 스택은 쓰레드 생성과 함께 생성된다. 쓰레드는 자신의 스택만 볼 수 있다. 즉 쓰레드 세이프하다.(다른 쓰레드의 데이터를 볼 수 없다.) 함수가 호출될 때 파라미터의 복제본이 스택에 push되고, 해당 함수의 변수들도 스택에 push 된다. 함수가 리턴할 때 스택에 저장된 데이터들이 pop된다. LIFO 구조 Stack에 접근하는 것은 heap 메모리에 접근하는 것보다 빠르다. Heap 스택은 객체와 같은 복잡한 데이터를 저장하는데 사용할 수 없다. primitive 타입과 같은 단순한 데이터 타입만 저장할 수 있ㄷ가. 스택에 저장되지 않은 모든 데이터는 heap에 저장된다. 스택과 달리 ..
-
Stack과 Queue 구현, 배열과 링크드 리스트 중 어떤 것을 이용할까?TECH/Algorithm 2021. 9. 14. 20:50
Summary Stack : 둘 다 가능 Queue: 리스트를 이용하는 것이 일반적. Stack & Queue Stack Array와 LinkedList 모두 구현 가능하다. Array 장점 메모리에 연속적으로 할당되는 특징 덕분에 캐시 지역성을 이용한 더 빠른 접근이 가능하다. 단점 사이즈가 제한되어 있다. 고정 크기 배열 경우 사이즈를 늘리기가 불가능하고, 유동 크기 배열의 경우 사이즈가 한계에 다다르면 어레이를 (일반적으로) 두배 크기로 늘리고, 기존의 요소들을 모두 복사해야하는 작업이 필요하다. LinkedList 장점 사이즈에 제한 받지 않는다. 단점 배열과 달리 요소가 연속적으로 할당되지 않아 비교적 느리다. 포인터를 위한 추가적인 메모리 공간이 필요하다. Queue LinkedList로 구현..