Stack vs Heap

2025. 7. 10. 16:40·JAVA

자바에서 Stack 과 Heap

 

✅ 스택(Stack)과 힙(Heap)은 뭐고, 왜 나뉘는가?


  • 자바 프로그램 실행 -> 필요한 데이터를 JVM 에 저장합니다.
  • 이때 저장되는 데이터의 성격은 다름 -> JVM 은 크게 Stack 과 Heap으로 나눠서 메모리 관리합니다.

 

🧮스택(Stack)


📌 정의

  • 메서드 호출 정보와 지역 변수를 저장하는 공간 → 스레드마다 하나씩 존재합니다.
    public int add(int a, int b) {
      int sum = a + b;
      return sum;
    }
  • a, b, sum: 모두 지역 변수 → Stack에 저장
  • add() 메서드 호출 정보 (파라미터, 복귀 주소 등) → Stack에 저장

⚙️ 작동 방식: LIFO

  • 메서드가 호출될 때 → Stack에 쌓임 (Push)
  • 메서드가 끝날 때 → Stack에서 제거됨 (Pop)

 

🧱힙(Heap)


📌 정의

  • new 키워드로 생성한 객체(인스턴스)들이 저장되는 공간 → 모든 스레드가 공유합니다.
    Person p = new Person();
  • p: 지역 변수 (Stack에 저장)
  • new Person() 객체 자체 → Heap에 저장

 

🧠 Stack vs Heap 비교 요약표


구분 Stack Heap
소유 스레드마다 별도 모든 스레드 공유
저장 내용 지역 변수, 메서드 호출 정보 객체 인스턴스
생성 방식 자동 할당/해제 new로 생성, GC로 해제
속도 빠름 느림
예외 StackOverflowError OutOfMemoryError

'JAVA' 카테고리의 다른 글

G1 GC vs CMS GC  (2) 2025.07.26
GC(Garbage Collection)  (2) 2025.07.26
스레드와 멀티스레드  (0) 2025.07.07
JMM  (0) 2025.07.07
JIT(Just-In-TIme) Complination  (4) 2025.07.07
'JAVA' 카테고리의 다른 글
  • G1 GC vs CMS GC
  • GC(Garbage Collection)
  • 스레드와 멀티스레드
  • JMM
moonwhistle
moonwhistle
  • moonwhistle
    OrangeBanana
    moonwhistle
  • 전체
    오늘
    어제
    • 분류 (113)
      • [Spring] - Study (11)
        • CS (0)
        • Project - 모각밥(모여서 각자 밥먹기) (7)
        • Project - CoinFlow(비트코인 차트) (4)
      • 오픈소스 (1)
      • 📖 DB (1)
      • JAVA (6)
      • 우아한테크코스[프리코스] (15)
      • [Spring] - 멘토링 (30)
        • 미션 (13)
        • 개념 (16)
      • 알고리즘 (2)
      • 💬 생각생각 (3)
        • F-lap (2)
      • 통신 (34)
        • 네트워크 프로토콜 (18)
        • 데이터통신 (16)
      • 용접 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 초록스터디
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    garbage collection
    GC
    F-Lab
    KAFKA
    jmm
    redis
    multimodule
    volatile
    Flow
    에프랩
    Synchronized
    Java
    설계
    spring
    후기
    코인
    data
    멀티모듈
    동시성
    트랜잭션
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
moonwhistle
Stack vs Heap
상단으로

티스토리툴바