Dev/JAVA

Heap & Stack

호나우지규 2021. 9. 24. 15:41

Stack

  • Heap 영역에 생성된 Object 타입의 데이터의 참조값이 할당됨
  • 원시타입의 데이터가 값과 할당됨
  • 지역변수들은 scope에 따ㅏ른 visibility를 가짐
  • 각 Thread는 자신만의 stack을 가짐

 

Heap

  • Heap영역에는 주로 긴 생명주기를 가지는 데이터들이 저장됨. (대부분의 오브젝트는 크기가 크고, 서로 다른 코드블럭에서 공유되는 경우가 많음)
  • 애플리케이션의 모든 메모리 중 stack에 있는 데이터를 제외한 부분이라고 보면 됨.
  • 모든 Object 타입(Integer, String, ArrayList, …)은 heap영역에 생성됨
  • 몇개의 스레드가 존재하든 상관없이 단 하나의 heap 영역만 존재
  • Heap 영역에 있는 오브젝트들을 가리키는 레퍼런스 변수가 stack 올라가게 .

출처 : https://yaboong.github.io/java/2018/05/26/java-memory-management/