면접 준비 (4)
- 박싱, 언방싱 사용 시 주의할 점
- 박싱은 값 형식을 참조 형식으로 감싸는 과정, 언박싱은 그 반대
- 이 과정에서 힙 메모리 할당이 발생하고, 값이 복사되기 때문에 성능 저하가 생길 수 있다..
- 제네릭을 사용하면 박싱/언박싱을 피할 수 있다.
- 오브젝트 풀을 사용하면 메모리 관리에 도움이 되는 이유
- 같은 객체를 반복해서 생성/파괴하는 일이 많은 경우가 있는데 이때마다 메모리 할당과 해제가 일어나면 GC가 자주 발생하고 성능 저하로 이어진다.
- 오브젝트 풀은 자주 쓰이는 객체를 미리 만들어두고, 재사용하는 방식이기 때문에 GC을 줄이고, 메모리 할당 비용을 아낄 수 있다.
- 제네릭
- 클래스나 메서드에서 타입을 일반화해서 다양한 타입을 받을 수 있게 하는 기능
- 타입 안정성과 재사용성이 높아지고, 박싱/언박싱 없이 값 형식을 처리할 수 있다는 점에서 성능에도 좋다.
- 람다식
- 익명 함수를 간결하게 표현하는 문법
- 이벤트 처리나 LINQ, 델리게이트 등록 등에 자주 활용된다.
- 조건을 짧게 정의할 수있어서 가독성이 높고, 코드가 깔끔해진다.
- LINQ
- Language Integrated Query는 컬렉션이나 배열, 데이터베이스 등에 대해 쿼리 처럼 데이터를 필터링, 정렬 등을 할 수 있게 해주는 기능
- 코드를 선언적으로 작성할 수 있어서 가독성이 높고, Where, Select 같은 함수들을 통해 복잡한 데이터를 효율적으로 처리할 수 있다.
- Reflection
- 런타임에 클래스, 메서드, 필드 등의 정보를 동적으로 조회하거나 조작할 수 있는 기능
- 예를 들어, 클래스 이름으로 인스턴스를 만들고나, 속성 이름으로 값을 설정할 수 있다.
- 확장성은 좋지만 성능이 떨어질 수 있어서, 자주 호출되는 곳에는 사용을 자제해야한다,
============================================================
Unity TLS Allocator ALLOC_TEMP_TLS 버그가 났다.
검색해보니 엔진 자체의 버그였다.
Asset -> ReImport All을 해주면 해결~
된다고 했는데, 해결되지 않았다.
실행 중에 나타난 것도 아니라 overflow는 아니어서 다행이긴한데,
Scene에서 오브젝트 추가하면서 맵 세팅 중에 버그가 발생하여 더 난감하다.
원인을 잘 모르겠지만, Unity를 껐다 키니 이제는 발생하지 않는다.