← 질문 목록
#243깊이 0
값 타입과 참조 타입은 무엇으로 구분하는가?
데이터가 메모리에 저장되는 방식과 전달되는 방식의 차이로 구분한다. 값 타입은 실제 값을 직접 저장하고, 참조 타입은 값이 저장된 메모리 주소를 저장한다.
| 타입 | 저장 위치 |
|---|---|
| 값 타입 | 값이 그 자리에 직접 들어간다. 지역 변수면 스택, 객체의 필드나 배열 원소면 힙 |
| 참조 타입 | 힙 메모리. 주소값이 저장되며 데이터는 힙에 위치함 |
값 타입은 변수 간 복사 시 값이 그대로 복사되어 서로 영향을 주지 않는다. 독립적인 상태를 유지하므로 부수 효과가 적어 안전하다.
참조 타입은 주소값을 복사한다. 여러 변수가 동일한 객체를 가리키므로 한 곳에서 수정하면 다른 변수에도 반영된다. 이는 메모리 효율을 높이지만 상태 변경 추적이 어렵다.
추천 꼬리질문
관련 질문
- 순환 참조 객체도 회수할 수 있는 이유는?언어 · 런타임참조 타입의 객체 간 순환 참조 문제는 가비지 컬렉션의 핵심 고려 사항이다.
- 참조 횟수가 0이 아닌 객체도 왜 수거되는가?언어 · 런타임참조 타입의 생명주기 관리와 가비지 컬렉션의 도달 가능성 판단 기준을 다룬다.
- 대입 뒤 한쪽을 바꿀 때 결과가 갈리는 이유는?언어 · 런타임대입 후 한쪽 값을 바꿀 때 결과가 달라지는 현상은 값 타입과 참조 타입의 동작 차이에서 기인한다.
- JVM 메모리 영역은 어떻게 구분하는가?언어 · 런타임값 타입과 참조 타입의 구분은 JVM 메모리 영역 중 스택(Stack)과 힙(Heap)에 저장되는 위치를 결정하는 기준이다.
- 파이썬의 가비지 컬렉션은 무엇으로 동작하는가?언어 · 런타임가비지 컬렉션은 기본적으로 참조 타입 객체의 메모리 회수를 위해 동작한다.