2010-01-28 2 views
85

저는 응용 프로그램 (iPhone)이 수행하는 메모리 및 수행시기와 위치를 이해하기 위해 Instance의 ObjectAlloc 도구를 사용하고 있습니다.인스트루먼트 ObjectAlloc : 라이브 바이트 및 전체 바이트 설명

난 정말이 통계에 대한 기본적인 설명과 같은 것이다 :

  • 라이브 바이트
  • 일시적인

  • 전체 바이트

생활 내가 노력하고 있어요 내 기억이 얼마나 많은지 알아 내려고. 응용 프로그램에서 라이브 바이트 또는 전체 바이트를 볼 수 있습니까? 여기에는 누출 된 메모리가 포함되어 있습니까? 임시 객체 란 무엇입니까?

감사

+6

열은 간단한 설명이있다. –

답변

109

ObjectAlloc 트랙 프로그램이 실행되는 시간에 모든 메모리 할당 및 할당 취소.

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

#Living은 특정 크기/개체 유형의 할당이 얼마나 많은지 (여전히 할당되어 있는지) 나타냅니다. 이것은 누출을 찾을 때 매우 유용합니다.

예를 들어, 반복적으로 동작 (예 : 모달 뷰 컨트롤러 외부로 들어오는 것처럼)을 수행 할 때마다 매번 같은 양만큼 객체의 #Living이 커지는 것을 보면, . 그런 다음 개체를 할당하는 정확한 코드 줄을 살펴보고 각 개체가 생성 된 시간 인덱스를 볼 수도 있습니다.

Overall bytes에는 출시 된 메모리가 포함됩니다. 성능 최적화 목적으로이 숫자를 추적하는 것이 유용하지만, 현재 메모리 사용량을 보거나 누출을 찾으려고하는 것은 아닙니다.

+3

Overall Bytes의 관점에서 무엇을 최적화하려고합니까? 숫자를 작게 유지하면 성능이 향상됩니다. –

+4

예, 맞습니다. 성능 문제의 일반적인 원인은 우연히 동일한 코드를 두 번 이상 실행하는 것입니다. Allocations 도구는 알릴 수있는 좋은 방법입니다. 예를 들어, 여분의 물체가 유출되지 않더라도 "왜 내가 그 물체를 3 개 만들었습니까? 한 번 밖에 없었을 것입니다!"라고 말할 수 있습니다. –

+0

@KenAspeslagh - 조금 혼란 스러워요. 예를 들어 봅시다. 할당에서 볼 수 있습니다 : 한 번에 200KB를 넘지 않아야하지만, 전체 바이트는 200MB에 가깝습니다. 내 애플 리케이션이 너무 많이 걸리므로 메모리 경고가 발생합니까? 또는 라이브가 200KB 밖에 없기 때문에 갈 수있어? –

18

통계 설명 apple 설명서. 당신이 그들의 헤더 위에 마우스를 올려 때 Link to the document

enter image description here

enter image description here

+0

이 문서에 대한 링크를 삭제할 수도 있습니까? – shoumikhin

+1

@ shoumikhin Plz check 답변 편집 –