Q: Unity Boxing과 UnBoxing에 대해 설명해 보아라

 

A: Boxing은 Stack 메모리의 Data를 Heap 메모리에 할당을 하는 방식이다.

Object a = value일 때 Heap 영역에 value 값이 할당되고, a는 그 값의 주소를 참조한다.

 

반대로 이렇게 Heap 영역에 할당된 Value를 Stack 메모리에 할당을 해야 하는 경우도 있다.

위 Object a에 대해 int b = (int)a 와 같이 값을 할당하는 것이 UnBoxing이다.

 

Boxing은 Stack의 값을 Heap에 할당하는 방식이고, UnBoxing은 Heap에 할당된 값을 Stack에 할당하는 방식이다.

 

단 이 방법의 단점은 Boxing한 메모리와 UnBoxing 한 메모리. 두 개의 메모리가 발생하기에 가비지가 발생한다는 점.

그리고 Value를 Boxing은 일반 할당보다 최대 20배, UnBoxing은 Casting 과정보다 최대 4배의 시간이 더 걸릴 수 있다.

이러한 단점에도 간간히 사용되는 이유는 그 편리성 때문이다.

주로 ArrayList, Hash Table이 대표적인 예이다.

+ Recent posts