박싱과 언박싱

JS·2023년 2월 4일
0

Tech Reference

목록 보기
8/13
post-thumbnail

박싱(Boxing)이란?

Value Type을 Object Type 또는 값 타입에서 구현된 임의의 타입으로 변환하는 프로세스이다. Value Type의 변수를 System.Object 인스턴스로 감싸 힙에 저장할 때 일어난다

박싱이 일어날 땐 Object 타입의 새로운 인스턴스를 생성해 값을 힙으로 복사한다

언박싱(Unboxing)이란?

박싱된 인스턴스에서 Value Type을 추출하는 프로세스이다. 인스턴스의 값을 값 타입 변수로 복사한다

언박싱이 일어날 경우 힙에서 스택으로 값이 복사된다

박싱과 언박싱이 일어날 경우 발생하는 일

박싱은 암시적으로 이루어지며 언박싱은 명시적으로 이루어진다


이 작업을 수행하기 위해서는 많은 연산이 필요하기 때문에 성능 저하의 우려가 있다. 단순한 참조 할당보다 최대 20배 오래 더 걸릴 수 있으며, 언박싱할 때의 연산은 단순 할당보다 4배 더 오래 걸릴 수 있다. 따라서 박싱과 언박싱의 사용은 가능하면 지양해야 한다


Reference

profile
게임 프로그래머 지망생

0개의 댓글