2011-12-02 1 views
6

인스트루먼트를 사용하여 어플리케이션을 프로파일 링합니다. 프로파일 링은 두 가지 방법으로 할당 도구를 사용하여 수행됩니다 :iOS 개발을 위해 인스트루먼트를 사용하는 데있어 모호한 점

  1. 직접 할당을 선택하여 내가 프로파일 링을위한 응용 프로그램을 실행할 때 누출을 선택하여
  2. 프로파일 링을위한 응용 프로그램을 실행할 때.

두 경우 모두 테스트를 위해 할당 도구를 사용할 수있었습니다. 그러나 놀랍게도, 이러한 경우에는 두 가지 종류의 아웃 풋을 할당했습니다.

그들은 다르게 행동해야합니까? 또는 이것은 Instruments와 관련된 문제입니다.

내가 누설 도구를 사용하여 프로파일 시간 :

할당 그래프에서

가 : enter image description here 1. 나는 그래프에서 봉우리의 많은 수는 라이브 바이트 및 전체 바이트 동일합니다. 2. 1 분 사용 후 블랙 플래그가 나타납니다 (메모리 경고에 대한 경고라고 생각합니다). 그런 다음 일련의 플래그가 나타나면 내 앱이 다운됩니다.

시간을 (이 직접 장치에 응용 프로그램을 실행하는 경우에도, 시간에 발생) 나는 할당 도구를 사용하여 프로필 : 할당 그래프에서

: enter image description here 1. 그것이 나는 종종 피크를 얻을하지 않습니다 위의 경우. 라이브 바이트는 항상 전체 바이트보다 작았습니다. 2. 나는 20 분 넘게 사용 해왔고 검은 깃발을 가지고 있지 않았다.

내가 알기로 한 사실은 라이브 바이트와 전체 바이트가 동일 할 때 NSZombieEnabled를 활성화 할 수 있다는 사실입니다.

혹시이 문제가 발생했는지 확인하십시오.

UPDATE 1 :

나는 첫 번째 경우 또 다른 문제에 직면했다. 짧은 기간 (두 번째 경우의 프로파일 링과 비교하여)에 프로필을 작성할 때마다 앱에 많은 Black Flags와 App App Crashed가 발생했습니다. (메모리 경고로 인해)

그리고 비슷한 단계를 응용 프로그램의 단계별 사용으로 시도해 보았을 때 응용 프로그램이 중단되지 않고 플래그가 없습니다.

왜 이러한 불일치가 발생합니까?

답변

9

"누수"템플릿이 할당 방법을 그런 식으로 구성하기 때문에 첫 번째 경우에만 라이브 할당을 추적합니다. 두 번째에서는 할당 된 할당량과 할당되지 않은 할당량을 모두 추적합니다. (코코아 푸가 말했듯이).

둘 다 유용하지만 약간 다른 이유가 있습니다.

실시간 할당 추적 만 (일반적으로 힙샷 분석과 함께) 응용 프로그램에서 영구적 인 힙 증가를 분석 할 수있는 좋은 방법입니다.영원히 갇혀있는 것이 무엇인지 알게되면 왜 그 이유를 알아 내고이를 최적화 할 수있는 방법이 있는지 확인할 수 있습니다.

살아있는 및 죽은 모든 할당을 추적하는 것은 할당 대역폭을 추적하는 매우 효과적인 수단입니다. 전체 바이트 단위로 정렬하고 가장 큰 #부터 시작할 수 있습니다. 모든 할당 지점을 살펴보고 (선택한 행 카테고리의 레이블 옆에있는 작은 화살표를 클릭) 모든 할당이 어디서 오는지 확인하십시오.

예를 들어, 그래프에는 해당 기간 동안 1.27MB의 14 바이트 할당 - 9218 할당이 있음이 표시됩니다. 모두 무료였습니다.하지만 여전히 할당하고, 데이터로 채우고 (아마도), 채우고, 그 각각을 해방시키는 일련의 작업을 나타냅니다. 문제 일 수 있습니다.

(이 기술을 사용하려면 응용 프로그램을 최적화하는 데이 기술을 사용했습니다. 일시적 - 수명이 짧은 할당 수를 줄이는 데 주력하여 응용 프로그램의 기본 알고리즘을 5 배 빠르게 할 수있었습니다 85 %의 메모리 사용을 줄일 수 있습니다. 밝혀 앱을 문자열에게 많은 많은 시간을 복사했다.) 당신이 설명한대로 응용 프로그램이 충돌하는 이유


확실하지. 메모리 경고이기 때문에 가장 자주 할당 된 것을 확인해야합니다.

좀비 검색을 사용하도록 설정하면 많은 추가 메모리가 필요합니다.

+0

bbum : 감사합니다. 나는 그 질문을 갱신했다. 내 의심을 분명히 해줄 수 있니? – Krishnan

2

할당이 인스턴스화되는 방식에 따라 다른 옵션이 있습니다. Allocations (할당) 타일에서 "i"기호를 클릭하여 옵션을 선택하십시오.

예, 나는 또한이 성가심을 찾습니다.

+0

어느 것이 올바른 것으로 선택합니까? 그들 각각은 어떤면에서 다른가? – Krishnan

관련 문제