2013년 4월 10일 수요일

Unity 2013 한국 1세션 - 메모리 프로파일링

Object 를 처리할 경우 Dispose 를 수동적으로 해주는게 좋다

Mono Garbage Collection 으로 처리하기에는 시간이 너무 길다.

- AssetBundle Memory Usage

Ex)

WWW www = new WWW(assetBundle.url);

Unity 4.2 에서는 바뀌겠으나 Decompression Buffer = 8MB per files

4.2 에서는 4MB per files 로 줄였다.

웹스트림을 삭제하기 위해서 수동으로 Dispose 를 불러온다.

assetBundle 지우기 ab Unload(false);-> 에셋 번들만 파괴

                             ab Unload(true); -> 모든 오브젝트도 파괴

유니티 4.2 에서는 실제로 어디에서부터 레퍼런스가 되는지를 볼수 있게 해준다.

따라서 4.2 는 위치를 알아서 지우는게 훨씬 용이 하다.

에셋번들 로딩은 하나씩 하는게 좋고

필요한것만 로딩하고 바로 수동으로 지워주는 것이 좋다.

Demo

결론

메모리 프로파일러로 메모리 사용을 확인하고

한번에 하나의 WWW 오브젝트만 로딩 하세요

피크 로드 메모리를 그래야 낮출수 있다.

Dispose() 를 수동으로 사용해라

UnloadUnusedAsset() 을 사용하여 에셋을 지워줄 것

메모리 프로파일러를 통해서 어디서 사용되고 있는지를 확인할 수 있으니 주로 사용할 것


UnloadUnusedAsset() 의 사용할 타이밍 또는 팁은?

-> 4.X 대에서는 훨씬 빠르게 동작합니다.

    한가지 팁은 UnloadUnusedAsset() 랙이 있어도 되는 경우에만 사용 하면 좋을듯

    하지만 4 버전에서는 훨씬 빠르다.



댓글 없음:

댓글 쓰기