Version: 2020.1
언어: 한국어
GPU 사용 프로파일러 모듈
물리 프로파일러 모듈

메모리 프로파일러 모듈

Unity에서 애플리케이션의 메모리 사용량을 분석하는 방법에는 다음의 두 가지가 있습니다.

  • 메모리 프로파일러 모듈: 애플리케이션이 메모리를 사용하는 위치에 대한 기본 정보를 제공하는 프로파일러 창의 빌트인 모듈입니다.
  • 메모리 프로파일러 패키지: 프로젝트에 추가할 수 있는 별도의 패키지입니다. Unity 에디터에 메모리 프로파일러 창을 추가하여 애플리케이션의 메모리 사용량을 더 자세히 분석하는 데 사용할 수 있습니다. 스냅샷을 저장하고 비교하여 메모리 누수를 더 쉽게 찾거나 메모리 레이아웃을 확인하여 메모리 단편화 문제를 찾을 수 있습니다.

이 페이지에서는 빌트인 메모리 프로파일러 모듈에 대한 정보를 다룹니다. 메모리 프로파일러 패키지에 대한 자세한 내용은 메모리 프로파일러 문서를 참조하십시오.

메모리 프로파일러 모듈은 애플리케이션에 할당된 총 메모리를 나타내는 카운터를 시각화합니다. 메모리 모듈을 사용하면 로드된 오브젝트 수, 카테고리별로 차지하는 총 메모리 등과 같은 정보를 볼 수 있습니다. 또한 프로파일러 프레임당 GC 할당 수도 확인할 수 있습니다.

에디터에서 애플리케이션을 프로파일링하면 메모리 모듈의 정보가 에디터의 메모리 사용량을 표시합니다. 이 수치는 일반적으로 릴리스 플랫폼에서 실행할 때보다 더 큽니다. 이는 Unity 에디터에서 실행하면 메모리를 차지하는 특정 오브젝트를 사용하고 에디터 창 자체가 추가 메모리를 사용하기 때문입니다. 또한 프로파일러는 사용하는 메모리도 표시하는데, 이는 Unity가 플레이 모드 플레이어가 사용하는 메모리와 명확하게 분리할 수 없기 때문입니다.

애플리케이션에 대한 더욱 정확한 수치와 메모리 사용량을 확인하려면 프로파일러를 Attach to Player 메뉴를 통해 실행 중인 플레이어에 연결하십시오. 이렇게 하면 타겟 디바이스의 실제 사용량을 볼 수 있습니다.

차트 카테고리

메모리 모듈은 애플리케이션이 메모리를 소비하는 위치에 대한 자세한 정보를 보여주는 6개의 차트로 구성됩니다. 차트에서 카테고리 순서를 변경할 수 있습니다. 이렇게 하려면 카테고리를 차트 범례에 끌어다 놓으십시오. 카테고리의 컬러 범례를 클릭하여 표시 여부를 토글할 수도 있습니다.

카테고리 설명
Total Allocated 애플리케이션이 사용한 총 메모리입니다.
Texture Memory 애플리케이션의 텍스처가 사용한 메모리 양입니다.
Mesh Memory 애플리케이션의 메시가 사용한 메모리 양입니다.
Material Count 애플리케이션의 머티리얼 인스턴스 수입니다.
Object Count 애플리케이션의 네이티브 오브젝트 인스턴스 수입니다.
Total GC Allocated GC 힙이 사용한 메모리 양입니다.
GC Allocated GC 힙에서 프레임당 할당된 메모리 양입니다.

모듈 세부 정보 창

프로파일러 창 하단에 있는 모듈 세부 정보 창에서는 SimpleDetailed 뷰를 사용할 수 있습니다. 뷰를 변경하려면 모듈 세부 정보 창의 왼쪽 상단에 있는 드롭다운에서 사용할 뷰를 선택하십시오.

간단한 뷰

간단한 뷰는 Unity 전역에서 메모리가 사용되는 방법에 대한 개요를 프레임별로 실시간 표시합니다.

Unity는 운영체제에 메모리를 너무 자주 요청하는 것을 방지하기 위해 메모리 풀을 예약합니다. 메모리 풀은 예약된 용량과 사용된 용량으로 표시됩니다.

간단한 메모리 모듈 뷰
간단한 메모리 모듈 뷰

여기에는 다음이 포함됩니다.

  • Total: 아래의 모든 영역에서 누적된 값입니다.
  • Unity: 네이티브 메모리 관리자 시스템에서 추적되고 타입, 소스 및 플랫폼 별 할당 패턴에 따라 메모리 풀에 할당된 네이티브 Unity 코드의 메모리 할당량입니다.
  • Mono: 총 힙 크기와 관리 코드가 사용하는 힙 크기입니다. 이 메모리는 가비지로 수집됩니다.
  • GfxDriver: 드라이버가 텍스처, 렌더 타겟, 셰이더 및 메시 데이터에 사용하는 메모리의 추정량입니다.
  • Audio: 오디오 시스템의 추정 메모리 사용량입니다.
  • Video: 동영상 시스템의 추정 메모리 사용량입니다.
  • Profiler: 프로파일러가 사용하는 총 메모리입니다.

프로파일러의 값은 운영체제의 작업 관리자에 표시되는 값과 다릅니다. 이는 메모리 프로파일러가 시스템의 모든 메모리 사용량을 추적하지 않기 때문입니다. 여기에는 일부 드라이버와 플러그인에서 사용하는 메모리와 실행 코드에 사용되는 메모리가 포함됩니다. 운영체제에서 애플리케이션의 총 메모리 크기를 확인할 수 있는 플랫폼의 경우 Total System Memory Usage 는 0보다 크며 작업 관리자에서 동일한 크기입니다.

또한 프로파일러는 아주 일반적으로 사용되는 에셋 및 게임 오브젝트 타입에 대한 메모리 통계도 보여줍니다. 이러한 통계에는 카운트(포워드슬래시 앞)와 사용된 메모리가 포함됩니다. 이 리스트에서 Total Object Count 는 애플리케이션이 생성하는 네이티브 게임 오브젝트의 총 개수를 표시합니다. 이 수치가 시간이 지나면서 증가하면 애플리케이션은 게임 오브젝트를 생성하기만 하고 파괴하지 않는 것입니다.

세부 정보 뷰

세부 정보 뷰를 사용하여 애플리케이션의 현재 상태에 대한 스냅샷을 생성할 수 있습니다. Take Sample 버튼을 클릭하여 현재 타겟에 대한 상세한 메모리 사용량을 캡처하십시오. 프로파일러가 이러한 데이터를 얻는 데는 많은 시간이 소요되므로, Detailed 뷰는 실시간 상세정보를 제공하지 않습니다. 프로파일러가 샘플을 가져오면 프로파일러 창에 애플리케이션의 메모리 사용을 자세히 검토할 수 있는 트리 뷰가 표시됩니다.

상세한 메모리 모듈 뷰
상세한 메모리 모듈 뷰

모듈 세부 정보 창의 상단에서 Gather object references 설정을 활성화하면 스냅샷 시점에 오브젝트를 참조하는 요소에 대한 정보를 수집할 수 있습니다. 이러한 정보는 창의 오른쪽 면에 표시됩니다.

메모리를 사용하는 오브젝트는 트리 뷰에서 다음 카테고리로 구분됩니다.

  • Other: 에셋, 게임 오브젝트 또는 컴포넌트가 아닌 오브젝트. Unity가 다양한 시스템에 사용하는 메모리 양 등과 같은 정보가 여기에 표시됩니다.
  • Not Saved: DontSave로 표시된 오브젝트
  • Builtin Resources: 그래픽스 설정의 Always Included Shaders 리스트에 추가한 셰이더 등과 같은 Unity 에디터 리소스 또는 Unity 기본 리소스
  • Assets: 사용자 또는 네이티브 코드에서 참조한 에셋
  • Scene Memory: 오브젝트 및 연결된 컴포넌트

Assets 또는 Scene Memory 리스트의 오브젝트를 클릭하면 프로젝트 또는 씬 뷰에서 강조 표시됩니다.

참고: Other 카테고리의 System.ExecutableAndDlls에 보고되는 메모리는 읽기 전용입니다. 운영체제에서 필요한 경우 해당 페이지를 폐기하고 나중에 파일 시스템에서 다시 로드할 수 있습니다. 그러면 메모리 사용량이 줄어들고 운영체제에서 과도한 메모리를 사용하는 애플리케이션을 종료하기로 결정하는 직접적인 원인이 되지 않습니다. 일부 페이지는 동일 프레임워크를 사용하는 다른 애플리케이션과 공유될 수도 있습니다.

GPU 사용 프로파일러 모듈
물리 프로파일러 모듈