반응형
테스트 환경
Unity 2018.4.8f1 - Standalone Windows x86_64
테스트 코드
...
private void Load()
{
_prefab = Resources.Load<GameObject>("3840x2160");
_prefabs.Add(_prefab);
}
private void Unload()
{
_prefab = null;
Resources.UnloadUnusedAssets();
}
private void Make()
{
_instance = Instantiate(_prefab, this.transform, false);
}
private void Delete()
{
Destroy(_instance);
_instance = null;
}
...
Profiler
Base | Resources Load | Instantiate | Destroy | Unload | |
Total Allocated | 40.1MB | 44.2MB | 44.2MB | 44.5MB | 40.2MB |
Texture Memory | 18.6MB | 22.6MB | 22.6MB | 22.6MB | 18.6MB |
Mesh Memory | 0B | 0B | 1.0KB | 1.0KB | 1.0KB |
Image 를 포함한 Prefab 은 Load 되는 순간 포함된 Texture 가 Memory 에 저장 된다. Inspector 에서 연결 해둔 Prefab 또한 Scene 로드시 같이 로드 되기 때문에 사용성이 떨어지는 Image 가 포함된 Prefab 은 필요한 시점에 Resources Load 기능을 사용해 로드 하는 것이 좋다.
참고로 Mesh Memory 가 Base 값으로 돌아가지 않아 추가 테스트를 진행 했는데, 같은 Prefab을 반복해서 Instantiate 하면 Mesh Memory 값이 계속 증가하고 모두 Destroy 한 후에는 Mesh Memory 는 그래프 상 1.0KB 이 된다. Memory Snapshot 을 확인해 보면 Not Saved 영역의 Mesh 안에 Shared UI Mesh 라는 값으로 정확히 확인 가능한데 모두 Destroy 했더라도 1.4KB 가 남는 것으로 나온다.
반응형
'Works > Unity 3D' 카테고리의 다른 글
[Unity] 최적화에 관한 정보들 (0) | 2020.05.06 |
---|---|
[Unity3D] RenderTexture RawImage 출력 이슈 (1) | 2020.02.13 |
[Unity3D] Script Templates 사용하기 (0) | 2019.09.19 |
[Unity3D] CS1617: Invalid option 'latest' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6. (0) | 2019.09.10 |
[Unity3D] Memory Profiler 설치 (0) | 2019.08.29 |
댓글