[java] 힙과 스택(Stack)의 차이점

자바 프로그램을 작성하다 보면 “힙”과 “스택”이라는 용어를 자주 듣게 됩니다. 이 둘은 메모리 관리와 관련된 개념으로, 프로그램이 실행되는 동안 사용됩니다. 이 블로그 포스팅에서는 힙과 스택의 차이점에 대해 설명하겠습니다.

목차

스택(Stack)

스택은 후입선출(LIFO, Last In First Out) 방식으로 동작하는 메모리 영역입니다. 메소드 호출 시 지역 변수, 매개변수, 메소드 반환 주소 등이 스택에 저장됩니다. 스택은 구조적으로 간단하며, 데이터 저장과 검색 속도가 빠릅니다.

public class StackExample {
    public void foo() {
        int x = 10;
        bar(x);
    }
    
    public void bar(int y) {
        // 메소드 로직
    }
}

힙(Heap)

힙은 동적으로 할당된 객체가 저장되는 영역으로, 객체의 생성 및 소멸은 사용자에 의해 관리됩니다. 힙은 데이터를 저장하는데 사용되며, 힙 영역에 저장된 객체는 전역적으로 접근 가능합니다.

public class HeapExample {
    public static void main(String[] args) {
        // 객체 생성
        StringBuilder sb = new StringBuilder("Hello");
        // 객체 소멸
        sb = null;
    }
}

힙과 스택의 차이

이렇게 스택은 프로그램의 메모리 관리에 있어 중요한 역할을 합니다. 이해하고 적절히 활용하는 것은 자바 개발자로서 중요합니다.

참조