[면접 질문] Java Stack & Heap의 구조

TraceofLight·2023년 7월 2일
0

InterviewStudy

목록 보기
9/11
post-thumbnail

Java 메모리 구조

JVM 구조와 원리의 내용을 참고하면 좋다.

애플리케이션 실행을 위해 구축한 Java Runtime Data Area가 메모리에 위치하게 됨

  • PC Register, Native Method Stack, Method 영역은 모든 스레드가 공유
  • Stack과 Heap 영역만 스레드 고유의 영역으로 가지게 됨

Heap의 구조

Eden → Survivor → Old

위와 같은 형태로 객체가 이동하게 되는데 기본적으로는 생성순으로 이해하면 될 것이다.

Garbage Collector의 역할

  • Eden: 자바 객체가 생성되자마자 저장되는 공간
  • Survivor & Old: 참조 정도에 따라 객체가 이동된 공간
  • Mark and Sweep 알고리즘을 사용한다.

Minor Garbage Collector

Eden과 Survivor 영역 (Young Generation) 의 메모리가 허용치를 초과하는 경우 객체의 참조에 따라 영역을 이동시키는 역할

Major Garbage Collector

Old 영역 (Tenured Generation) 의 메모리가 허용치를 초과할 경우, 참조되지 않는 객체를 전부 제거하고 메모리를 회수하는 역할

  • 삭제 과정에서 가비지 컬렉터를 실행하는 스레드를 제외한 나머지 스레드 전부 정지 ('Stop-The-World')

Stack의 구조

기본 자료형 + 지역 변수 + 매개 변수

여기서 매개 변수의 경우, 객체의 주소값을 가지고 Heap 영역의 객체를 참조하는 형태로 사용된다.

→ 매개 변수가 다른 객체를 참조하게 되는 경우, 주소값이 달라지는 것뿐이며, Heap에 저장된 객체가 바로 사라지지 않는다! (Major GC가 실행 전까지 Hold)

참고

코딩 팩토리의 글

profile
24시간은 부족한 게 맞다

1개의 댓글

comment-user-thumbnail
2023년 7월 3일

무친무친...

답글 달기