2013-01-09 4 views
1

안녕하세요. 저는 힙 성장이 많다는 것을 도구에서 알아 냈으므로 할당 된 메모리로 트루블했습니다. 따라서 테스트 앱을 설계했습니다.불합리한 힙 성장

테스트 응용 프로그램에는 두 개의 ViewController가 포함되어 있으며 각각 하나의 버튼이 있습니다. 첫 번째 ViewController는 Segue Modal을 통해 SecondViewController에 연결되었습니다 (자동 생성 옆에 코드가 전혀 없습니다).

두 번째의 ViewController는 기능을

-(IBAction)back:(id)sender{ 
     [self dismissModalViewControllerAnimated:YES]; 
} 

내가 던질 플립 수있는 전망이있다.

내가 부엉 악기를 테스트 할 때 나는 두 번째보기로 돌아간 후에 힙 성장을 발견했습니다.

enter image description here enter image description here

어떻게 그런 가망은? 내가 뭘 놓치고 있니?

+0

500KB는 적합하지 않습니까? 너는 무엇을 기대 했는가? – Macmade

+0

내가 이해할 수있는 것은 0이어야합니다. 같은 상태로 돌아 오면 어떤 메모리 증가도 없어야합니다. 그렇지 않으면 틀린가요? –

+0

힙 크기는 응용 프로그램 메모리 사용량이 아닙니다. – Macmade

답변

1

힙 크기는 응용 프로그램 메모리 사용량이 아닙니다.

앱이 작동 중일 때 커널은 메모리를 할당해야합니다.
최신 시스템은 가상 메모리를 사용합니다. 기본적으로 실제 주소를 가상 주소에 매핑하여 프로세스에서 액세스합니다.

이 매핑은 커널에서 처리하며 메모리가 필요합니다.

1MB 메모리를 요청하면 주소 공간의 크기를 늘려 할당 된 실제 페이지를 추적하기 위해 메모리를 할당해야합니다.

메모리를 모두 비우면 커널은 일반적으로 매핑에 사용 된 메모리를 유지하고 다음 할당을 위해 메모리를 다시 사용하므로 공간을 다시 할당 할 필요가 없습니다.

이 때문에 힙 크기가 변경되지 않습니다. 하지만 응용 프로그램의 메모리 사용량을 전혀 나타내지는 않습니다.

인스트루먼트를 사용하는 경우 VM 트래커 도구를 참조하십시오.

+0

흠, 34KB가 매핑에 사용된다는 의미입니까? (힙 지점 3 참조). 368 개의 새 물체가 살아 있다는 sugest 옆의 숫자. 나는 이것이 확실한 지 모르겠다. 심지어 http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/blog 0이어야한다고 말하십시오. –