2013-10-02 4 views
5

현재 게임을 시작했습니다. 진행 상황이 좋았고 모든 것이 원활하게 진행되었지만 Xcode Instruments를 사용하여 코드에서 누출 여부를 확인하기로 결정했습니다. 나는 ARC를 사용하고 있고 새로운 객체는 다른 것들이 삭제 될 때 추가된다. (내 게임의 내부 동작의 일부) 그러나 총 메모리 크기는 계속 증가하면서 계속 증가한다.iOS 지속적으로 메모리 사용량이 증가합니다.

내 게임은 완전히 절차 적으로 생성되며 애셋이 필요하지 않으며 색상으로만 매핑 된 몇 개의 다각형도 사용하므로 텍스처가 없습니다. 나는 그것이 (그것은 밖으로 시작하는) 달리기 위하여 다만 2 MBs를 달려야 한 ㄴ다는 것을 예상한다 그러나 성장하는 것을 계속한다.

이제 흥미로운 것을 발견했습니다 ... 대부분의 데이터를 사용하는 것은 IOAccelResource라는 항목입니다. 어떤 가속도계/자이로 스코프/나침반 데이터를 사용하지 않으므로 이상합니다. 내 프로젝트에서 참조 된 CoreMotion 프레임 워크조차 없다.

데이터의 두 번째 주요 용도는 성장을 계속하는 4 개의 malloc 모음입니다. 상대적으로 똑같은 두 개 더 있습니다.

이 두 항목은 프로그램에서 누출로 간주되지 않습니다. 그리고 Xcode에 내 코드를 분석하도록 말하면 어떤 문제도 지적하지 않습니다.

다른 모든 항목은 매우 작으며 동일한 지점에서 변동되거나 그대로 유지됩니다. Entries

어떤 조언 : 여기

은 번잡 항목의 스크린 샷이다?

답변

8

"전체 바이트"또는 "전체 (요소)"가 계속 커지는 것을 말하는 경우 일반적으로 전체 메모리 사용량을 추적하므로 문제가되지 않습니다 (즉, 릴리스 된 메모리를 고려하지 않음). 기억).

"라이브 바이트"및 "#Living (요소)"이 무엇인지보고 기대에 부합하는지 확인해야합니다.

"전체 바이트"가 계속 증가하면 앱이 다운되지 않습니다. 반면에 "라이브 바이트"가 계속 증가하면 앱이 다운됩니다.

Apple은 계기 프로필에 정보가 너무 많아서 xCode5에서 중요한 정보를 xCode로 직접 추출했음을 깨달았습니다. 응용 프로그램을 실행할 때 다음에서 6 번째 아이콘 (디버그 탐색기)을 클릭하십시오. 네비게이터 (xCode의 왼쪽 열). "라이브 바이트"만 추적 할 메모리 표시기가 나타납니다.

또한 WWDC 2013 비디오에 액세스 할 수있는 경우 세션 410 : 메모리 문제 해결을 확인하십시오.

희망이 도움이됩니다.

+0

아, 고마워! 나는 정말 심각한 일이 벌어지고 있다고 걱정했다. 완벽한 메모리 관리 기능이있는 것으로 보입니다! – Bananable

+11

나는 이것이 사실이 아니란 것을 알았다. 악기를 볼 때, 내 응용 프로그램은 완벽한 메모리 관리를 보여줍니다. XCode에서 Memory 그래프를 보면, 타이머가 시작될 때마다 내 앱이 1.5MB의 메모리를 지속적으로 할당하고 있다는 것을 알 수 있습니다. 인스 트루먼 트의 조사 결과를 받아 들여서 계속 진행하고 싶습니다만, 걱정됩니다. – CMVR

+4

동일 : Xcode 메모리 게이지가 계속 커지면서 커지면서 Allocations + Leaks 장비는 메모리가 제대로 관리되고 있음을 나타냅니다. 내가 그려야 할 결론이 무엇인지 모르겠다. –

관련 문제