본문 바로가기

관리 메뉴

[Unity] Unity 게임 최적화 방법 정리 (NDC-AxE 강연 정리) 본문

프로그래밍/ㄴ기타

[Unity] Unity 게임 최적화 방법 정리 (NDC-AxE 강연 정리)

최갓 2023. 4. 13. 13:54
반응형

1. Scene 전환 시 메모리 문제

씬 전환 중 하위 디바이스에서 메모리 부족으로 앱 크래시 발생

빈 Scene을 만들어 경유 하여 장면 전환

 

2. Distance검사

게임이 무거워지면서 Distance검사도 부하가 생김

직접 거리를 검사하는 것이 아니라 콜리더 체크로 해결.

 

3. enum키를 사용하는 Dictionary

enum을 사용한 dictionary는 박싱을 발생시키므로, 가비지가 발생된다

타입에 맞는 enum comparer를 만들면 GC가 발생하지 않음.

 

4. Android Native Crash

 

5. 메모리 부족으로 인한 크래시

Mono 2.0의 보헴 GC는 단편화에 취약. GC는 Managed Heap

GC.Collect의 빈도를 증가 -> OutOfMemory가 크게 줄어듬

 

5-1. NavMeshAgent.path read가 garbage를 생성

NavMeshAgent.path접근 시 

-new NavMeshPath

-내부 데이터 복사

-새로운 객체 return

->NavMeshPath생성 시 내부에서 native객체를 생성

정상적인 Heap사이즈(앱 Initalize시)
Nav Mesh의 new/delete로 인해 heap free영역을 조각냄
OS에게 추가메모리를 할당받지만, 조각난 영역으로 인해 들어갈 Free heap이 없음

 

 

게시글에 문제가 있을 시 말씀해주시면 감사하겠습니다.

반응형
Comments