← 질문 목록
#352깊이 0
자바의 원시 타입과 래퍼 클래스는 메모리 구조상 어떤 차이가 있는가?
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
원시 타입은 변수 공간에 실제 값을 직접 저장하고, 래퍼 클래스 변수는 힙에 있는 객체를 가리키는 참조를 저장한다. 메모리 점유량과 접근 방식에서 큰 차이가 난다.
| 기준 | 원시 타입 (예: int) | 래퍼 클래스 (예: Integer) |
|---|---|---|
| 저장 위치 | 스택 프레임 또는 객체 필드 | 힙 영역 |
| 저장 내용 | 실제 데이터 값 | 객체 헤더 + 데이터 값 |
| 메모리 크기 | 값 자체는 4바이트 | 객체 머리와 정렬, 참조 압축 설정에 따라 다르다 |
int 값은 32비트, 4바이트다. Integer는 객체 헤더와 정렬까지 합쳐 흔한 64비트 압축 참조 구성에서 대략 16바이트다 — 구현과 JVM 옵션에 따라 달라진다.
래퍼 클래스는 힙 영역에 할당되므로 가비지 컬렉션의 관리 대상이다. 변수를 읽을 때도 참조를 거치는 간접 접근이 일어나 CPU 캐시 효율이 떨어진다. 반복문에서 캐시 범위 밖 값이 오토박싱되면 짧은 시간에 많은 객체가 생겨 GC 부담을 늘릴 수 있다.