박싱이 일어나면 안 좋은 이유

LJM·2023년 10월 10일
0

C#

목록 보기
4/4

박싱(Boxing)은 값 타입을 참조 타입으로 변환하는 과정입니다. 반대 과정은 언박싱(Unboxing)이라고 하며, 참조 타입을 다시 값 타입으로 변환하는 것을 의미합니다. 박싱이 자주 발생하면 성능과 메모리 사용에 여러 부정적인 영향을 줄 수 있습니다:

메모리 할당: 박싱이 발생할 때마다 새로운 객체가 힙에 할당됩니다. 힙에서의 메모리 할당과 해제는 스택에서의 연산보다 훨씬 느립니다.

가비지 컬렉션 오버헤드: 박싱으로 생성된 객체들은 가비지 컬렉션의 대상이 됩니다. 자주 박싱이 발생하면 GC가 더 자주 실행되어야 하며, 이로 인해 애플리케이션의 성능에 부담이 될 수 있습니다.

언박싱 오버헤드: 박싱된 객체를 원래의 값 타입으로 다시 변환하려면 언박싱이 필요합니다. 이는 추가적인 CPU 오버헤드를 발생시킵니다.

값 복사: 박싱 과정에서 원래 값 타입의 값이 새로운 객체에 복사됩니다. 이로 인해 불필요한 메모리 복사 작업이 발생하게 됩니다.

타입 안전성 감소: 박싱된 객체는 object 타입이므로, 원래의 타입 정보를 잃게 됩니다. 따라서 언박싱 시에 올바른 타입으로 변환하는지 확인하는 추가적인 타입 검사가 필요합니다. 잘못된 타입으로의 언박싱은 런타임 예외를 발생시킬 수 있습니다.

profile
게임개발자 백엔드개발자

0개의 댓글