← 질문 목록
#277깊이 0

자바의 원시 타입과 래퍼 클래스는 메모리 구조상 어떤 차이가 있는가?

언어 · 런타임기초메모리

원시 타입은 변수 공간에 실제 값을 직접 저장하고, 래퍼 클래스 변수는 에 있는 객체를 가리키는 참조를 저장한다. 메모리 점유량과 접근 방식에서 큰 차이가 난다.

기준원시 타입 (예: int)래퍼 클래스 (예: Integer)
저장 위치스택 프레임 또는 객체 필드힙 영역
저장 내용실제 데이터 값객체 헤더 + 데이터 값
메모리 크기값 자체는 4바이트객체 머리와 정렬, 참조 압축 설정에 따라 다르다

int 값은 32비트, 4바이트다. Integer는 객체 헤더와 정렬까지 합쳐 흔한 64비트 압축 참조 구성에서 대략 16바이트다 — 구현과 JVM 옵션에 따라 달라진다.

래퍼 클래스는 힙 영역에 할당되므로 가비지 컬렉션의 관리 대상이다. 변수를 읽을 때도 참조를 거치는 간접 접근이 일어나 CPU 캐시 효율이 떨어진다. 반복문에서 캐시 범위 밖 값이 오토박싱되면 짧은 시간에 많은 객체가 생겨 GC 부담을 늘릴 수 있다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

자바의 원시 타입과 래퍼 클래스는 메모리 구조상 어떤 차이가 있는가?