2015-02-04 1 views
8

AFNetworking 2.5를 사용하여 많은 수의 이미지를 다운로드하고 디스크로 스트리밍하려고합니다. Xcode의 메모리 모니터에 따르면 무한한 메모리 증가 (결국 메모리 경고 및 강제 종료)가 발생하지만 할당 도구를 사용하여 메모리 사용량을 프로파일 링하면 메모리 사용이 안정적임을 알 수 있습니다.iOS 메모리 사용량이 증가했지만 범인을 찾을 수 없습니다.

저는 Xcode가 여기에 잘못되었다고 생각하고 싶습니다. 그렇다면 왜 내 앱이 iOS에 의해 죽을까요?

인스트루먼트는이 보여줍니다 - 피크가 코어 데이터 쿼리이며, 그 나머지는 이미지가 다운로드입니다 - 피크를 약 9.5MB에서, 나머지는 나도 해봤 약 8.5MB

Instruments

에 앉아 ITERA 당 여러 개의 MB에 의해 성장 -

Heapshot Analysis

엑스 코드의 메모리 모니터이 표시되지만 갑자기 엑스 코드에 의해보고 된 양에 가까운 성장의 작은 비트를 보여줍니다 - Heapshot 분석 .

Xcode Memory Usage

인스트루먼트는보고있다 어떤 Xcode를 보여줘 갈 수있는 방법이 있나요? 아니면이 모든 기억이 어디로 가고 있는지 알아내는 데 더 좋은 도구가 있습니까?

감사합니다.

+1

프로필러를 통해 앱을 실행하면 기본적으로 출시 빌드로 간주됩니다. Xcode를 통해 디버그 버전을 빌드 할 때 실행하는지 궁금합니다. 당신의 계획을 점검하고 두 사람이 같은 버전을 만들고 있는지 확인하십시오. – Rob

+0

"실행"및 "프로필"모두 구성표 편집기에서 디버그하도록 설정됩니다. 설정 될 수있는 다른 장소가 없다면? – NathanGaskin

+0

아니, 그게 내가 정확히 생각하고있는 곳이야. 프로필의 릴리스 빌드를보고 (결과적으로 디버그 빌드와 다른 동작을 보는 것만으로도) 일반적입니다. 물론, Instruments에서는 Allocation Tool의 "Record Options"탭에있는 "Recorded Types"설정에서 모든 유형을 기록하고 있다고 가정합니다. 매우 호기심이 많습니다. heisenbug. – Rob

답변

13

Xcode의 메모리 모니터에 따르면 무한한 메모리 증가 (그리고 결국 메모리 경고 및 강제 종료)가 발생하지만 할당 도구를 사용하여 메모리 사용량을 프로파일 링하면 메모리 사용이 안정적으로 나타납니다.

믿을 수있는 계측기 및 할당 정보 - 아니요. Xcode의 메모리 모니터. 메모리 모니터 그래프는 전혀 관련이 없습니다. 무시해.

이것은 Xcode의 메모리 모니터가 쓸모 없거나 잘못 되었기 때문에 발생하는 것이 아닙니다. 메모리 관리은 릴리스 빌드보다 디버그 빌드와 완전히 다릅니다 (Instruments는 릴리스 빌드를 사용합니다). Swift에서 특히 그렇습니다 (Swift를 사용하는지 여부는 밝히지 않음).

메모리 사용량은 이고 장치의 경우이고 릴리스 빌드에서는 입니다. 그렇지 않으면 완전히 오인 될 것입니다.

+0

이것은 분명히 경우와 같습니다. 우리는 아무런 문제없이 릴리스 빌드에서 문제가되는 코드를 수천 번 반복 실행했습니다. 프로필 구성표를 '디버그'로 설정하면 릴리스 빌드가 프로파일 링된다는 결과가 여전히 이상하게 보입니다. – NathanGaskin

관련 문제