메모리 최적화에 필요한 Boxing 개념 정리
- C# 데이터 형식은 스택을 사용하는 값 형식과 힙을 사용하는 참조 형식으로 나뉩니다. 📚
- 스택은 작고 빠른 메모리 영역이며, 힙은 크지만 관리가 필요한 동적 메모리 영역입니다. 🧠
- 값 형식(int, float, bool, struct, enum)은 크기가 고정되어 스택에 저장되며, 참조 형식(class, string, object)은 힙에 실제 데이터가 존재하고 스택은 그 주소를 가집니다. 💾
- 박싱(Boxing)은 값 형식을 참조 형식(특히
object)으로 변환하는 과정으로, 값 데이터를 힙에 새로운 "박스" 객체로 감싸 저장합니다. 📦
- 언박싱(Unboxing)은 박싱된 참조 형식을 다시 값 형식으로 변환하는 과정으로, 힙의 박스 객체에서 값을 복사해 가져옵니다. 🎁
- 박싱은 힙 메모리 할당과 가비지 컬렉터(GC) 부하를 유발하여 잠재적인 성능 저하의 원인이 됩니다. 📉
string.Format과 같이 값 형식을 object로 암시적 변환할 때 박싱이 흔히 발생합니다. 💬
- 박싱을 피하려면 값 형식에
.ToString()을 명시적으로 호출하거나, TextMeshPro의 SetText와 같은 제네릭 메서드를 사용하여 내부 버퍼를 활용하는 방법을 사용합니다. 💡
데브허브 | DEVHUB | 메모리 최적화에 필요한 Boxing 개념 정리