← 질문 목록
#62깊이 0
객체와 호출 프레임은 왜 따로 저장하는가?
객체는 여러 스레드가 공유할 수 있어 힙에 둔다. 호출 프레임은 스레드마다 독립된 실행 상태라 각 JVM 스택에 둔다.
| 기준 | 공유 영역 | 스레드별 영역 |
|---|---|---|
| 대표 공간 | 힙, 메서드 영역 | JVM 스택, PC 레지스터 |
| 수명 | JVM과 함께 | 스레드와 함께 |
프레임에는 지역 변수, 피연산자 스택, 반환 정보가 있다. 메서드가 끝나면 프레임이 사라져 별도 GC가 필요 없다.
힙의 객체는 참조가 끊겨도 바로 사라지지 않는다. GC가 도달 불가능하다고 판단한 뒤 회수한다.
메서드 영역은 명세상의 공유 영역이다. HotSpot은 클래스 메타데이터를 네이티브 메모리의 Metaspace에 둔다.