Instruments ObjectAlloc : 라이브 바이트 및 전체 바이트 설명


86

내 응용 프로그램 (iPhone)이 수행하는 메모리가 무엇인지, 언제 어디서 수행하는지 이해하기 위해 Instument의 ObjectAlloc 도구를 사용하고 있습니다.

이 통계에 대한 기본적인 설명이 필요합니다.

  • 라이브 바이트
  • #생활
  • #일시적인
  • 전체 바이트

내 응용 프로그램에서 사용중인 메모리 양을 계산할 때 Live Bytes 또는 전체 바이트를 확인해야합니까? 여기에 누수 된 메모리가 포함됩니까? 일시적인 개체는 무엇입니까?

감사


6
헤더 위로 마우스를 가져 가면 열에 간단한 설명이 표시됩니다.
Piotr Byzia

답변:


110

ObjectAlloc 프로그램이 실행되는 동안 모든 메모리 할당 및 할당 해제를 추적합니다.

Living bytes, or Net bytes응용 프로그램이 타임 라인에서 선택한 시간에 사용되는 메모리의 양입니다. 누수 된 메모리는 할당 해제되지 않기 때문에 여기에는 누수 된 메모리가 포함됩니다.

#Living특정 크기 / 객체 유형의 할당이 발생하고 여전히 할당 된 수입니다. 누수를 찾을 때 매우 유용합니다.

예를 들어, (모달 뷰 컨트롤러에서 나오는 것과 같은) 동작을 반복적으로 수행하고 #Living개체의 동작이 매번 같은 양만큼 증가하는 것을 본다면 해당 개체가 누출 될 수 있습니다. 그런 다음 드릴 다운하여 개체를 할당하는 정확한 코드 줄을보고 확인할 수 있으며 각 개체가 생성 된 시간 인덱스도 볼 수 있습니다.

Overall bytes해제 된 메모리를 포함합니다. 성능 최적화를 위해이 숫자를 추적하는 것이 유용하지만 현재 메모리 사용량을 확인하거나 누수를 찾으려는 경우에는 유용하지 않습니다.


3
전체 바이트 측면에서 무엇을 최적화하려고합니까? 숫자를 작게 유지하려고하면 성능이 향상됩니까?
Dan Rosenstark 2011 년

4
네, 맞습니다. 성능 문제의 일반적인 원인은 실수로 동일한 코드를 두 번 이상 실행하는 것입니다. 할당 도구는이를 알 수있는 좋은 방법입니다. 예를 들어, 여분의 물체가 누출되지 않더라도 "왜 그 물체를 3 개 만들었습니까? 하나만 있었어야 했어요!"라고 말할 수 있습니다.
Ken Aspeslagh

2
라이브 바이트는 앱에서 현재 사용중인 메모리 양입니다. 전체는 앱이 만든 모든 할당의 총계입니다 (이후 해제 된 메모리 포함).
Ken Aspeslagh

1
@KenAspeslagh 릴리스 된 개체도 포함되어있는 경우 전체 바이트에 관심이있는 이유는 무엇입니까?
Dejell 2013 년

3
성능을 조정하는 경우 앱이 실행될 때 수행하는 할당 수를 최소화해야합니다 (해당 할당량을 유출하지 않더라도). 과도한 할당은 종종 잘못하고 있음을 나타내는 지표가 될 수 있습니다.
Ken Aspeslagh

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.