- 박싱은 값 타입을 참조 타입으로 변환해주는 것이다.
- 언박싱은 박싱했던 것을 다시 원상태로 복귀시키는 것이다.
- 값 타입은 Object를 상속받은 '구조체'이며, 해당 데이터에 직접 값이 저장된다.
- 따라서, 값 타입은 스택 영역에 저장된다.
- 데이터에 대한 참조가 저장되며, 변수를 선언할 때, 메모리가 생성되지 않는다.
- 참조 타입은 힙 영역에 저장된다.
- 스택에 저장되어 있는 값 타입을 힙 타입으로 복사하고, 복사된 영역을 참조 타입이 가리킨다.
- 참조 타입을 다시 값 타입으로 변환시킨다.
- 힙 영역에 있던 데이터를 스택으로 복사하는 일이 발생한다.
- 스택에 있는 값을 복사해 힙에 저장하고, 다시 스택 영역에 가져오는 박싱과 언박싱 작업을 진행하면서, 힙 영역에 가비지 메모리가 쌓이게 되며, 가비지 컬렉터를 불러 비효율적이기 때문에 잘 사용하지 않는다.
- 따라서 제네렉 (Generic)을 사용하면 문제를 해결할 수 있다.