Juuunew 살아남기

[JAVA] 메모리 - Heap 본문

Language/JAVA

[JAVA] 메모리 - Heap

Juuunew 2023. 1. 2. 23:07

자바 프로그램이 실행되면서 동적으로 생성된 객체가 저장되는 공간이다.

 

  • 모든 Object 타입의 데이터가 할당됨
  • Heap 영역의 Object를 가르키는 참조변수가 Stack에 할당
  • 생명주기가 김
    • 생명 주기에 따라 Young Generation(짧음)과 Old Generation(김)으로 나뉘어진다. (추후 공부예정)

쉽게 말해 new 연산자로 생성된 객체 또는 인스턴스가 저장되는 공간이라고 생각하면 편하다.

 

age는 원시타입 int를 타입으로 가지고있어 Stack 영역에 값이 함께 저장되어지고, Object를 상속받아 구현된 String 객체의 값은 Heap 영역에 생성되게 된다.

 

Stack 영역에 생성된 name 변수는 Heap 영역에 있는 String 주소값을 참조하게 된다.

 

 

조금 더 나아가서 name을 Park에서 Kim으로 변경하면 새로운 String("Kim")의 주소값을 참조하게 되며, 기존에 생성되어지고 더 이상 사용하지않는 String("Park")은 자바의 GC(Garbage Collection)에 의하여 제거된다. (추후 GC에 대해 정리 후 업로드)

 

💡 공부 중 정리하는 내용이므로 부족한 부분이 있을 수 있습니다.