블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (666)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (104)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (218)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total343,311
Today3
Yesterday91

개인 필요에 의해 번역한 글입니다.

원문을 참고하시길 강추드립니다.


유니티 5.3a4는 상당히 저레벨의 새로운 메모리 프로파일러 API가 있다.

이 프로파일러는 어느 오브젝트가 얼마나 많은 c++ 메모리 할당을 받았는지에

대해 찾아낼 수 있다.

IL2CPP 플랫폼에서 c#타입의 설명 뿐 아니라 전체 c# 힙의 덤프까지 제공한다.


이 API는 대부분의 사람들이 사용하기에는 너무 저레벨이다.

이 말은 이 API를 사용하기 위해 멋진 UI 윈도우가 더해지면

정말로 많은 사람에게 활용하기 유용할 것이며,

어느 오브젝트가 로드되었는지, 어느 오브젝트가 많은 메모리를 차지하는지,

그리고 가장 중요한 왜 그 오브젝트가 메모리에 있는지를 찾는데 도움을 줄 것이다.

이 레퍼지토리는 더 멋진 UI 윈도우로 작업이 진행중에 있다.


일반적인 "메모리 릭"의 패턴은 우리가 알고 있듯이, 

만약 정적 필드가 있는 c#클래스에 큰 크기의 Texture2D의 레퍼런스를 가지는

오브젝트의 리스트를 가지고 있는 경우이다.

이 Texture2D는 c#에서 여전히 접근할 수 있으므로 절대 언로드 되지 않는다.

이런 경우를 파악하기는 무척 힘들다.

이 새로운 메모리 프로파일러 윈도우는 직관적으로 만들어 질 것이며,

만약 큰 Texture2D를 선택하면, Texture2D가 로드되는 원인이 되는

정적 c# 필드(클래스 이름을 포함한)에 대한 대한 레퍼런스의 역추적 정보가 표시될 것이다.

이는 il2cpp 플렛폼에서만 작동하며, 이 역추적을 하기 위해 전체 il2cpp힙이 필요하다)


우리는 유니티 제품 자체에서 저수준 레벨 API를 올려 접근하는 방식을 채택하였고,

"적절하게 유니티에 포함될 충분한 준비"로 이미 오래전에 

이 메모리 프로파일러 윈도우를 오픈소스 형태로 해 두었다.

우리는 이 윈도우를 오픈소스 프로젝트로 개발할 것이다.

기부는 환영합니다.

어떤 시점에서 우리는 이 기능이 충분하다고 느낄 것이고,

그 시점에 유니티와 함께 상자 밖으로 나올 것이다.


오늘날, 이 기능의 UI 부분은 여전히 무척 힘들다.

우리는 어쨌든지 프로젝트를 오픈소스로 하기로 결정했으며,

너의 프로젝트에서 "메모리를 절약해야 하는데, 지금 우리가 무었을 할 수 있을까?" 라고 생각한다면,

너는 아마 메모리 릭을 찾는 것에 대해 더 많은 관심을 가질 것이며, 그리고

지금부터 6개월 뒤에는 이 기능의 훌륭한 버튼과 사용 경험으로 메모리 릭들을 찾을 것이다.


사용 :

- 유니티 5.3a4나 그 이상 버전 사용

- il2cpp 프로젝트로 빌드 & 실행 (어느 il2cpp 플렛폼이라도 괜찮다.)

- 이 레퍼지토리에서 프로젝트를 연다.

- 일반적인 프로파일러 윈도우를 연다.

- 일반적인 프로파일 하듯이 플레이어 연결

- 메모리 프로파일러 윈도우 열기(Window-MemoryProfilerWindow)

- "SnapShot" 클릭

- 또는 이 비디오 참조 : https://www.youtube.com/watch?v=7B6xRYMzst8


개인 생각

이 툴의 존재를 안지는 좀 되었는데 그다지 잘 활용하지 않았던 이유가 현재 프로파일러를 사용함에 있어

그다지 모자른 감이 없었고 이 툴 역시 기존 프로파일러와 같이 에디터상에서 종료시 깔끔하게

내부 캐시정보? 같은걸 정확하게 내려주지 않아서 아직 로드하지 않은 것들도 메모리에 로드되어 있어 보이기 때문이다.

물론 이 현상은 기존 프로파일러에도있어서 최적화 작업을 할 때는 보통 최대한 에셋을 클릭하지 않거나

클릭을 했다면 에디터 종료가 아니라 유니티 프로그램을 껏다 켜야 제대로 정보가 나왔다.

비주얼 적으로 훌륭하기 때문에 추천할만한 기능이다.


Reference Link

- unity technologies, MemoryProfiler

- c# 컴파일 그리고 il2cpp

- unity community, memory profiler

-

Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함